[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…
Ca sert à avoir ceux qui ont le moins de campagne en sommet de liste.
Sinon c’est résolu
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]