Résoudre l'alias Postgresql dans le problème de la clause WHERE
Les requêtes Postgresql renvoient parfois une erreur indiquant une colonne inexistante lors de l'utilisation d'alias dans la clause WHERE. Cela se produit parce que l'évaluation de la clause WHERE précède la clause SELECT, rendant les alias définis dans SELECT indisponibles.
La solution consiste à utiliser des expressions de table communes (CTE). Un CTE crée un jeu de résultats temporaire nommé qui peut être référencé ultérieurement dans la requête, y compris dans la clause WHERE. Cela permet effectivement l'utilisation d'un alias dans la condition WHERE. Voici une illustration :
<code class="language-sql">WITH job_details AS ( SELECT jobs.*, CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END AS lead_status FROM jobs LEFT JOIN lead_informations ON lead_informations.job_id = jobs.id AND lead_informations.mechanic_id = 3 ) SELECT * FROM job_details WHERE lead_status = 'NEW';</code>
Le CTE, « job_details », génère une table temporaire comprenant la colonne alias « lead_status ». La clause WHERE utilise ensuite cet alias de manière transparente comme si elle faisait référence à une colonne de table standard. Cette approche améliore la flexibilité et la lisibilité des requêtes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!