Probleme alias/where - SQL/NoSQL - Programmation
Marsh Posté le 07-03-2013 à 10:42:20
Les alias du Select ne peuvent être utilisés dans le Where. Pour rappel, le Select contient le résultat du Where. Dans ces conditions, tu vois bien que ça se "mordrait la queue". Pour filtrer les enregistrements remontés dans le select, soit tu passes par une requête dans laquelle ta requête actuelle est une sous-requête (où tu aurais retiré les critères de filtrages qui posent soucis et que tu aurais mis ans le Where de la requête "mère", celle "au-dessus de la sous-requête), soit tu passes par la clause Having.
Marsh Posté le 07-03-2013 à 10:50:36
Euréka, il faut croire que j'ai été touché par la grace divine ce matin, j'ai trouvé, pas besoin de vous tracasser pour moi je vous mets la solution :
Code :
|
Juste attention, le limit doit être à l'extérieur sinon vous ne sélectionner que les colonnes de la première requête, ensuite le SQL_CALC_FOUND_ROWS
pour la fonction FOUND_ROWS() de sql ne peut être que dans la requête de sortie => erreur sinon, également, ne pas oublier de faire un alias sur la sortie de la requete imbriquée. Un soucis à cette méthode est qu'il est obligatoire d'utiliser le nom des colonnes de sortie de la requête imbriqué (exemple j'ai écris d.dt_name as st, je dois donc utiliser 'st' et non d.dt_name qui n'est plus défini, par contre si j'écris d.dt_name sans alias, je peux le réutiliser).
J'ai vu pas mal de post sur le net sans réponses, j'espère que je pourrai aider certaines personnes qui ont le même problème.
Cordialement,
Paul
Edit : Merci rufo, mais le having ne fonctionnait pas dans mon cas
Marsh Posté le 07-03-2013 à 10:00:52
Bonjour à vous, voilà je recherche une solution depuis quelque temps déjà sans vraiment en trouvé une, j'aimerai pouvoir utiliser mes alias dans une condition "WHERE" je vous mais un extrait de ma requête (construite dynamiquement) :
Mon problème apparrait à la ligne 114
Merci de vos réponse,
celui qui trouve je lui paye un verre sur Paris :-)
Message édité par sltpaulo le 07-03-2013 à 10:02:27