26. januar 2006 - 14:43Der er
15 kommentarer og 1 løsning
Unknown coloumn age - SELECT --calculation-- AS age FROM
Jeg har flg. query, men det giver fejlen "Unknown coloumn age in where clause", hvad er der galt?
"SELECT u.*,e.*,MAX(l.timestamp) AS lastlogin,((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) AS age FROM users AS u, expanded AS e JOIN log AS l ON l.uid=u.id WHERE e.uid=u.id && " . $q . " ORDER BY lastlogin DESC"
Nå ja, sorry, skulle selvf. have postet queryet. Here it is:
SELECT u.*,e.*,MAX(l.timestamp) AS lastlogin,((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) AS age FROM users AS u, expanded AS e JOIN log AS l ON l.uid=u.id WHERE e.uid=u.id && age >= '15' && u.country='dk' ORDER BY lastlogin DESC
Og age er jo defineret som alias. Det plejer da godt at kunne blive brugt i WHERE clause.
Så er der kun tilbage at smide alias koden direkte ind:
SELECT u.*,e.*,MAX(l.timestamp) AS lastlogin,((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) AS age FROM users AS u, expanded AS e JOIN log AS l ON l.uid=u.id WHERE e.uid=u.id AND ,((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) >= 15 AND u.country='dk' ORDER BY lastlogin DESC
Der var lige smuttet et komma ind: SELECT u.*,e.*,MAX(l.timestamp) AS lastlogin,((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) AS age FROM users AS u, expanded AS e JOIN log AS l ON l.uid=u.id WHERE e.uid=u.id AND ((YEAR(CURDATE())-YEAR(u.birth)) - (RIGHT(CURDATE(),5)<RIGHT(u.birth,5))) >= 15 AND u.country='dk' ORDER BY lastlogin DESC
Mente da også at MySQL kunne bruge alias i where, men jeg sidder desværre ikke et sted hvor jeg kan teste det. Men vi fandt da en løsning...
.o) <-- One Eyed Jack
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.