Salut,
Dans une requete SQL, j'aimerai utiliser un alias dans la clause WHERE.
Bon, je sais que ce n'est pas possible :
Mais j'aimerai savoir s'il y a une façon de faire.
Petit exemple:
Je sais que je peux réutiliser l'expression complete à la place de l'alias (ici nb_jours), mais j'aimerai faire plus simple si possible.
J'ai vu aussi qu'on pouvais utiliser des variables utilisateurs avec MySQL (en assignant comme ceci :
, mais ceci n'est pas bon non plus..
Quelqu'un aurait une solution?
Dans une requete SQL, j'aimerai utiliser un alias dans la clause WHERE.
Bon, je sais que ce n'est pas possible :
Code:
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. Par exemple, la requête suivante est illégale :
SELECT id,COUNT(*) AS cnt FROM nom_de_table WHERE cnt > 0 GROUP BY id;
La clause WHERE est exécutée pour savoir quelles lignes devraient être inclues dans la partie GROUP BY tandis que HAVING est utilisé pour décider quelles lignes du jeu de résultats doivent être utilisées.
Mais j'aimerai savoir s'il y a une façon de faire.
Petit exemple:
Code:
SELECT IF( v.date_controle_vehicules=v.date_circulation_vehicules,
(TO_DAYS( DATE_ADD( v.date_controle_vehicules, INTERVAL 4 YEAR) )-TO_DAYS( NOW() ) ),
(TO_DAYS( DATE_ADD( v.date_controle_vehicules, INTERVAL 2 YEAR) )-TO_DAYS( NOW() ) )
) AS nb_jours
FROM cta_comptes c INNER JOIN cta_vehicules v USING (id_comptes)
WHERE nb_jours=30
OR nb_jours=15
OR nb_jours=3
J'ai vu aussi qu'on pouvais utiliser des variables utilisateurs avec MySQL (en assignant comme ceci :
Code:
SELECT @nb_jours:=IF( v.date_controle_vehicules=v.date_circulation_vehicules,
(TO_DAYS( DATE_ADD( v.date_controle_vehicules, INTERVAL 4 YEAR) )-TO_DAYS( NOW() ) ),
(TO_DAYS( DATE_ADD( v.date_controle_vehicules, INTERVAL 2 YEAR) )-TO_DAYS( NOW() ) )
) AS nb_jours
FROM cta_comptes c INNER JOIN cta_vehicules v USING (id_comptes)
WHERE @nb_jours=30
OR @nb_jours=15
OR @nb_jours=3
Quelqu'un aurait une solution?