Je rencontre des problèmes avec cette requête SQL. Mon objectif est de récupérer les ContactID des contacts qui vivent en CT ou MA et qui ont eu plus de 2 événements.Filtrage de requêtes SQL COUNT sans utiliser HAVING
Voici la requête que je suis en train d'utiliser:
SELECT `Contacts`.`ContactID`
FROM (`Contacts`)
JOIN `Events` ON `Contacts`.`ContactID` = `Events`.`ContactID`
JOIN `Contact_Addresses` ON `Contacts`.`ContactID` = `Contact_Addresses`.`ContactID`
WHERE `Contact_Addresses`.`State` IN ('CT', 'MA') AND COUNT(Events.EventID) > 2
Je sais que je pourrais utiliser le groupe par déclaration HAVING. Comme si:
...WHERE `Contact_Addresses`.`State` IN ('CT', 'MA')
HAVING COUNT(Events.EventID) > 2
Mais cela ne me donne pas les résultats corrects que je recherche. Je sais que je suis proche, je pense que j'ai besoin d'une sous-requête ajoutée? Toute orientation dans la direction que je devrais aller serait une aide énorme.
Je vote parce que je suis d'accord avec le changement suggéré. Cependant, je pense que vous vous trompez dans votre explication du problème actuel. Sans un GROUP BY, la requête actuelle de l'OP ne peut renvoyer que 1 ligne au plus. (Un HAVING sans GROUP BY implique le "grand total" GROUP BY, qui renvoie une seule ligne normalement mais le HAVING peut la filtrer à 0.) –