Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Błąd: Unknown column in where clause, MySQL nie widzi stworzonej przez siebie kolumny
Master Miko
post 1.11.2009, 22:57:42
Post #1





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


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


--------------------
Go to the top of the page
+Quote Post
someone.cool
post 2.11.2009, 00:17:38
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 31.01.2009

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


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


Ten post edytował someone.cool 2.11.2009, 00:19:25
Go to the top of the page
+Quote Post
Master Miko
post 2.11.2009, 00:22:22
Post #3





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


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!


--------------------
Go to the top of the page
+Quote Post
someone.cool
post 2.11.2009, 00:59:22
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 31.01.2009

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


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...

Ten post edytował someone.cool 2.11.2009, 01:01:49
Go to the top of the page
+Quote Post
Master Miko
post 2.11.2009, 01:42:38
Post #5





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

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


działa, rzeczywiście filtruje dobrze, natomiast nie wiem jak ma się wydajność co do having vs where.. ? ;/

Dzięki za pomoc


--------------------
Go to the top of the page
+Quote Post
someone.cool
post 2.11.2009, 10:07:13
Post #6





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 31.01.2009

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


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

Ten post edytował someone.cool 2.11.2009, 10:09:39
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.05.2025 - 05:56