[Résolu][SQL] Pas de retour si count = 0

Bonjour,

J’ai un problème avec l’une de mes requêtes :

[quote]SELECT c.id,email,count(r.idCampagne)
FROM contact c
LEFT JOIN recevoir r ON (c.id = r.idContact)
LEFT JOIN campagne ca ON (r.idCampagne = ca.id)
WHERE ca.dateEnvoi BETWEEN ‘2006-06-01’ AND '2006-06-30’
GROUP BY id HAVING count(r.idCampagne) <10
ORDER BY 3;[/quote]

Lorsque j’exécute cette requête, elle ne me renvoie pas les résultats où le count est égal à 0.

Or, si j’exécute cette requête :

Elle me renvoie bien 0.

Je ne comprends pas pourquoi le résultat de la deuxième requête n’est pas dans la première.

Tu utilises un HAVING dans la requete 1 et pas dans la 2 pour faire tes tris, essaye voir dans la 2 si tu utilises “HAVING idContact = 1214” si cela te renvoie toujours le résultat attendu ou pas, je serais tenté de dire qu’il faudrait utiliser ta requête 2 puis, au lieu de mettre un “AND bla=xxxx” d’utiliser quelque-chose comme : "AND monIdQueJeVeux IN ".

M’enfin bon c’est pas hyper digeste à lire le matin avec le premier café tout ça…

[quote=“Opera140”]
ORDER BY 3;[/quote]

A quoi ça sert ça ?

Ca sert à avoir ceux qui ont le moins de campagne en sommet de liste.

Sinon c’est résolu :slightly_smiling:

La bonne requête est :

[quote]SELECT contact.id,email,count(mesCampagnes.id) FROM contact
LEFT JOIN recevoir ON (contact.id = recevoir.idContact)
LEFT JOIN (SELECT id FROM campagne WHERE dateEnvoi BETWEEN ‘2006-06-01’ AND ‘2006-06-30’) mesCampagnes ON (mesCampagnes.id=recevoir.idCampagne)
GROUP BY idContact HAVING count(mesCampagnes.id) <10
ORDER BY 3;[/quote]