Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak uproscic takie zapytanie
Rozpalacz
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 31.01.2006

Ostrzeżenie: (0%)
-----


  1. SELECT id_pracownika, imie, DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( data_urodzenia ) ) , '%Y' ) +0 AS age
  2. FROM `pracownicy` WHERE DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( data_urodzenia ) ) , '%Y' ) +0 =27
  3. LIMIT 0, 30

da sie jakos zastąpić "DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( data_urodzenia ) ) , '%Y' ) +0" by nie pisac go drugi raz?

chcialem zrobic cos takiego:
  1. SELECT id_pracownika, imie, DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS( data_urodzenia ) ) , '%Y' ) +0 AS age
  2. FROM `pracownicy` WHERE age =27
  3. LIMIT 0, 30

ale nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
topp
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 3.10.2008

Ostrzeżenie: (0%)
-----


Jeszcze taka drobna uwaga na przyszłość:
jeśli masz możliwość, to staraj się nie używać NOW() w zapytaniu, które będzie wymagało jego wywołania wiele razy. Ta funkcja jest niedeterministyczna, co sprawia, że silnik nie cachuje jej wyniku i za każdym razem wywołuje na nowo. W końcu nie chciałbyś, pytając o bieżący czas, dostać zapamiętanej odpowiedzi sprzed paru minut, prwada? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Jeśli dasz mysqlowi do przejrzenia paręset tyś. rekordów, to wywołasz NOW paręset tysięcy razy. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

W takiej sytuacji lepiej przypisać przed zapytaniem wartość NOW() do jakiejś zmiennej, a potem użyć tej zmiennej w zapytaniu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 13:16