Bonjour à tous,
J'ai des clients, des dépôts, des visites.
Un client est rattaché à un dépôt.
Une visite est rattaché à un client et à un dépôt.
J'ai besoin de récupérer l'ensemble des clients qui, soit son rattachés à un dépôt particulier, soit on eu une visite qui elle est rattaché à ce dépôt.
La sélection des clients du dépôt est :
La sélection des clients qui ne sont pas rattachés à ce dépôt mais qui ont eu une visite rattaché au dépôt est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM TBClients WHERE CDepId=25
Ces deux requêtes sont rapides à exécuter. Par contre, j'aimerai n'en faire qu'une :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT c2.ClientId FROM TBClients c2 WHERE c2.CDepId != 25 AND c2.ClientID IN ( SELECT DISTINCT VClientId FROM TBVisites WHERE VDepId = 25 )
Et là ça met 30 secondes à s'exécuter...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM TBClients WHERE CDepId=25 or ClientId in ( SELECT DISTINCT VClientId FROM TBVisites WHERE VDepId = 25 )
Comment je peux faire pour avoir une seule requête ayant la rapidité des deux premières ?
Merci beaucoup;
A bientôt
Partager