Bonjour,
Je mets en place une requête pour établir le décompte du nombre de devis, de commandes et de factures qui est lié à un client.
Sachant :
- un devis peut ne jamais se convertir en commande, il sera classé devis sans suite
- une commande peut provenir d'un devis, mais être également passée directement par le client
- une facture peut être une commande convertie, où simplement une vente directe avec facture
J'ai fait les deux requêtes suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT C.CLIENT_ID, D.NbreDevis, O.NbreCde, F.NbreFact FROM CLIENT C LEFT JOIN (SELECT CLIENT_ID, COUNT(*) AS NbreDevis FROM DEVIS GROUP BY CLIENT_ID) AS D ON D.CLIENT_ID = C.CLIENT_ID LEFT JOIN (SELECT CLIENT_ID, COUNT(*) AS NbreCde FROM CDE GROUP BY CLIENT_ID) AS O ON O.CLIENT_ID = C.CLIENT_ID LEFT JOIN (SELECT CLIENT_ID, COUNT(*) AS NbreFact FROM FACTURE GROUP BY CLIENT_ID) AS F ON F.CLIENT_ID = C.CLIENT_IDVous serez t-il possible de m'indiquer laquelle est la plus rapide et m'en expliquer les raisons ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT C.CLIENT_ID, (SELECT COUNT(*) AS NbreDevis FROM DEVIS D WHERE D.CLIENT_ID = C.CLIENT_ID) AS NbreDevis, (SELECT COUNT(*) AS NbreCde FROM CDE E WHERE E.CLIENT_ID = C.CLIENT_ID) AS NbreCde, (SELECT COUNT(*) AS NbreFact FROM FACTURE F WHERE F.CLIENT_ID = C.CLIENT_ID) AS NbreFact FROM CLIENT C
Personnellement, je pense que la seconde requête est plus rapide, mais je ne sais pas bien expliquer pourquoi.
Merci de m'éclairer.
Partager