Bonjour,
Est-il possible d'effectuer ceci ? :
HAVING COUNT(COLUMNA) > COLUMNB
Merci :)
Version imprimable
Bonjour,
Est-il possible d'effectuer ceci ? :
HAVING COUNT(COLUMNA) > COLUMNB
Merci :)
HAVING intervient après le GROUP BY.
Si colonneB est dans le GROUP BY, ça doit pouvoir fonctionner.
Oui, je viens de l'expérimenter.
Mais je ne comprend pas trop pourquoi.
Le group by définit les uniques colonnes qui peuvent être utiliser par la clause SELECT c'est ça ?
Et de façon indirecte, les seules colones qui peuvent être utilisées sont celles définies par le group by ?
Comme j'écris souvent, toutes les colonnes du SELECT ne faisant pas l'objet d'une fonction de groupage doivent figurer dans le GROUP BY sous peine de voir des valeurs aléatoires pour les colonnes manquantes.
Le problème qui aurait pu se poser dans votre cas est que mettre colonneB dans le GROUP BY change le résultat car ne dépendant pas directement de la ou des colonnes qui y figuraient jusque là.
Merci :)
Mon problème se situait plutôt au niveau de l'ordre d’exécution des clauses. J'oublie encore trop souvent que le SELECT est exécuté en dernier lieu et donc hérite des colonnes définies par la dernière clause exécutée.
Ici, pour utiliser une colonne dans la clause HAVING, il faut que celle-ci soit définie dans la dernière clause exécutée, à savoir le GROUP BY(ici).
Problème résolu donc.