Dans PostgreSQL, la requête suivante renvoie une erreur :
SELECT COUNT(a.log_id) AS overall_count FROM "Log" as a, "License" as b WHERE a.license_id=7 AND a.license_id=b.license_id AND b.limit_call > overall_count GROUP BY a.license_id;
ERROR: column "overall_count" does not exist
La raison de cette erreur est que la clause WHERE fait référence à une colonne de sortie, "overall_count", qui n'est pas encore définie dans la structure de la table. Pour résoudre ce problème, nous devons déplacer la condition de comptage vers la clause HAVING car elle fait référence à un résultat de fonction agrégé après que WHERE ait été appliqué.
De plus, la requête doit également utiliser un LEFT JOIN au lieu d'un JOIN normal pour évitez d'exclure les licences sans aucun journal et utilisez count(b.license_id) ou count(*) pour plus d'efficacité et de clarté.
La requête correcte devrait ressembler à ceci :
SELECT a.license_id, a.limit_call , count(b.license_id) AS overall_count FROM "License" a LEFT JOIN "Log" b USING (license_id) WHERE a.license_id = 7 GROUP BY a.license_id HAVING a.limit_call > count(b.license_id)
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!