Bonjour,
Je gère un agenda avec des fiches contacts. Je souhaite récupérer le nombre de contacts ayant un rendez-vous entre le 01/08 et le 31/08 pour la première fois depuis 3 ans.
J'ai fait cette requête :
SELECT COUNT(DISTINCT(personne_id)) FROM wcal_events w
WHERE id_user=55
AND eventdate BETWEEN '2010-08-01' AND '2010-08-31'
AND personne_id != 0
AND event_etat = 5
AND faut_id = 58
AND personne_id NOT IN (SELECT personne_id
FROM wcal_events
WHERE id_user=55
AND eventdate BETWEEN SUBDATE(w.eventdate,INTERVAL 3 YEAR) AND SUBDATE(w.eventdate,INTERVAL 1 DAY)
AND personne_id != 0
AND event_etat IN (4,5)
AND faut_id=58
GROUP BY personne_id); |
Mais elle est longue à s'exécuter, et j'ai cherché d'autres solutions sans résultat efficace ... Quelqu'un pourrait-il m'aider ou me conseiller quelque-chose pour optimiser cela ? je pense que le problème vient de la sous-sélection qui est recalculée à chaque fois ... mais comment faire autrement ?
MERCI !!!!