Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Błąd: Unknown column in where clause
Forum PHP.pl > Forum > Bazy danych > MySQL
Master Miko
Witam, przy wywołaniu tego polecenia:
  1. SELECT (
  2. UNIX_TIMESTAMP( t2.date_start )
  3. ) AS d1, (
  4. UNIX_TIMESTAMP( t2.date_end )
  5. ) AS d2, t1.id, t1.day_number, t1.hour_stamp
  6. FROM cykliczne_okresy AS t2
  7. LEFT JOIN cykliczne_godziny AS t1 ON t1.okres_id = t2.id
  8. WHERE (
  9. d1 <1257033600
  10. AND d2 >1257033600
  11. )
  12. OR (
  13. d1 <1259625600
  14. AND d2 >1259625600
  15. )
  16. ORDER BY day_number, t1.hour_stamp
  17. LIMIT 0 , 30


Pojawia się błąd:
#1054 - Unknown column 'd1' in 'where clause'

Wpisując dane zapytanie bez klauzuli "where" wykonuje się i prawidłowo wyświela kolumny d1 i d2.

Proszę o pomoc w ominięciu buga/mojej niekompetencji tongue.gif

Pozdrawiam
someone.cool
Tylko tak to ruszy...
  1. SELECT
  2. UNIX_TIMESTAMP(t2.createdtime) AS d1
  3. FROM vtiger_crmentity AS t2
  4.  
  5. -- bla bal bla
  6.  
  7. WHERE UNIX_TIMESTAMP(t2.createdtime)< 1257033600
  8.  
  9. -- bla bal bla
  10.  
  11. LIMIT 0, 30
Master Miko
acha.. no ale to strasznie obciąża (pewnie) bazę :/
chociaż to w sumie będzie max 14 rekordów..

no nic, dziękuję za pomoc!
someone.cool
nie ma co sie poddawać stary... faktycznie mojego local hosta zamuliło na sekundę.

Dlatego zobacz to:

  1. HAVING (
  2. d1 <1257033600 AND d2 >1257033600 )
  3. OR (
  4. d1 <1259625600 AND d2 >1259625600 )

i sprawdź czy dobrze filtruje;)

może kto inny ma ciekawsze pomysły? Ciekawi mnie dalej czy nie można dać WHERE...
Master Miko
działa, rzeczywiście filtruje dobrze, natomiast nie wiem jak ma się wydajność co do having vs where.. ? ;/

Dzięki za pomoc
someone.cool
dziwne jest to, że z HAVING jest krócej, bo z tego co mi wiadomo roznica pomiedzy nimi polega na tym, że WHERE limituje dodawanie do tabeli z wynikami rekordów, a w przypadku HAVING najpierw jest budowana cała tabela wyników i przed wyświetleniem jest limitowana.

można powiedzieć, że:
WHERE - wpuszcza do autobusu wszystkich, którzy mają bilet, a HAVING wpuszcza wszystkich, a potem wyprasza tych bez biletu winksmiley.jpg

Teoretycznie having powinno być "cięższe", ale chyba w Twoim przypadku nie jest wiec się cieszymy winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.