Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ERROR 1054 (42S22): Unknown column

[es] :: MySQL :: ERROR 1054 (42S22): Unknown column

[ Pregleda: 1403 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

357_97

Član broj: 53056
Poruke: 104
*.dynamic.sbb.rs.



+5 Profil

icon ERROR 1054 (42S22): Unknown column02.04.2011. u 14:37 - pre 159 meseci
Imam sledeci problem. Upit
Code:
SELECT news_id AS nid FROM news WHERE nid > 1;
vraca gresku
Code:
ERROR 1054 (42S22): Unknown column 'nid' in 'where clause'
Ono sto me cudi je da se upit
Code:
SELECT news_id FROM news WHERE news_id > 1
izvrsi kako treba. Pa me interesuje zasto baca ovu gresku? MySQL server je 5.1.36.

Pretpostavljam da je resenje krajnje trivijalno!
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: ERROR 1054 (42S22): Unknown column02.04.2011. u 14:50 - pre 159 meseci
To što si stavio "as nid" ne znaci da mozes da koristis nid u where uslovu. To nid ti sluzi samo u rezultatu upita da se naziv kolone ne zove news_id nego nid.
A ako hoćeš da ti radi upit stavi news_id u where uslovu..
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: ERROR 1054 (42S22): Unknown column02.04.2011. u 14:55 - pre 159 meseci
To je zbog toga što u trenutku kad se računa WHERE uslov, vrednost tog alijasa nije poznata. Na primer
Code (mysql):
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;

Ovde u trenutku računanja da li je cnt>0, vrednost cnt nije poznata.

Više o ovome pogledaj na stranici:
http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.dynamic.sbb.rs.



+5 Profil

icon Re: ERROR 1054 (42S22): Unknown column02.04.2011. u 15:17 - pre 159 meseci
To sam video i bilo mi je logicno da zbog GROUP BY, COUNT(*) AS cnt nije izracunat. S druge strane milsio sam da se to neodnosi na moj primer jer sam samo napravio alias na kolonu koja vec postoji - news_id AS nid.

To znaci da bi upit bio validan moram da uradim ovako nesto (2 puta ponovim isto racunjanje)
Code:
SELECT user_id, TIMESTAMPDIFF(YEAR, user_dob, NOW()) AS age
FROM users
WHERE TIMESTAMPDIFF(YEAR, user_dob, NOW()) > 18
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-7.sezampro.rs.



+33 Profil

icon Re: ERROR 1054 (42S22): Unknown column02.04.2011. u 16:12 - pre 159 meseci
Za takve jednostavne, neagregatne upite nikad nisam koristio HAVING klauzulu, ali ovo bi trebalo da prođe:
Code:
SELECT user_id, TIMESTAMPDIFF(YEAR, user_dob, NOW()) AS `age`
FROM users
HAVING `age` > 18
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: ERROR 1054 (42S22): Unknown column02.04.2011. u 16:42 - pre 159 meseci
357 - da, stim da ce upit da radi hiljadama puta brze ako umesto

WHERE ... TIMESTAMPDIFF(YEAR, user_dob, NOW()) > 18 ...

stavis

WHERE ... user_dob < now() - interval 1 year ...

u prvom slucaju imao/nemao index nad user_dob radis full table scan dok u drugom slucaju ako imas index nad user_dob radis range scan nad indexom sto je mnoooogo brze



nikola - having je zeznut zato se uslov proverava nad vec dobijenim rezultatom tako da je spor

 
Odgovor na temu

[es] :: MySQL :: ERROR 1054 (42S22): Unknown column

[ Pregleda: 1403 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.