MySQL a répondu Unknown column 'ddd' in 'where clause'

xmach
Invité n'ayant pas de compte PHPfrance

21 avr. 2010, 14:03

Bonjour je ne comprend pas pourquoi je n'arrive pas a recuperer mon alias sur cette requete mysql :
SELECT news.titre, max( news_diff.date_diff ) AS ddd
FROM `news`
JOIN news_diff ON ( news_diff.id_news = news.id )
WHERE ddd <= current_date( )
GROUP BY news.id
LIMIT 0 , 30 
Mysql me renvois systematiquement : #1054 - Unknown column 'ddd' in 'where clause'

Quelqu'un peut t'il m'expliquer pourquoi ?
Merci à vous.

ViPHP
ViPHP | 5462 Messages

21 avr. 2010, 14:08

parce que c'est pas possible ;)
WHERE max( news_diff.date_diff ) <= current_date( )
Notez que ANSI SQL ne vous permet pas de vous référer à un alias dans une clause WHERE. Il en est ainsi car lorsque le code de WHERE est exécuté, la valeur de la colonne ne peut pas encore être déterminée
http://dev.mysql.com/doc/refman/5.0/fr/ ... alias.html
Modifié en dernier par stealth35 le 21 avr. 2010, 14:09, modifié 1 fois.

Mammouth du PHP | 568 Messages

21 avr. 2010, 14:09

parce que c'est pas possible ;)
WHERE max( news_diff.date_diff ) <= current_date( )
ou avec HAVING (sur champs dynamique)

xmach
Invité n'ayant pas de compte PHPfrance

21 avr. 2010, 14:11

SELECT news.titre, max( news_diff.date_diff ) AS ddd
FROM `news`
JOIN news_diff ON ( news_diff.id_news = news.id )
GROUP BY news.id
HAVING ddd <= current_date( )
LIMIT 0 , 30
Exactement, je viens de voir mon erreur au moment ou j'ai envoyé le message après 30 minutes de galères idiotes de ma part :(

Ca fonctionne parfaitement avec HAVING