Bonjour,
Comme dit dans le titre, y a-t-il un moyen d'appliquer des fonctions (COUNT, SUM, etc.) sur plus d'une table jointe dans une seule et même requête ?
Par exemple, si on veut récupérer les montants totaux des achats et des ventes d'un client :
Cette requête multiplie les lignes de ACHATS avec les lignes de VENTES (comme on pouvait s'y attendre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT CLIENTS.NOM, SUM(ACHATS.COUT_TTC), SUM(VENTES.COUT_TTC) FROM CLIENTS LEFT JOIN ACHATS ON ACHATS.ID_CLIENT = CLIENTS.ID_CLIENT LEFT JOIN VENTES ON VENTES.ID_CLIENT = CLIENTS.ID_CLIENT GROUP BY CLIENTS.NOM
Existerait-il un moyen élégant d'obtenir le résultat recherché ?
Dans l'exemple précédent, un moyen non élégant serait :
Question subsidiaire : ma question est-elle une "vraie" question ou s'agit-il ici plutôt d'un problème "cosmétique" comme dirait l'ami SQLPro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT CLIENTS.NOM, SUM(ACHATS.COUT_TTC) / COUNT(DISTINCT(VENTES.ID_VENTE)), SUM(VENTES.COUT_TTC) /COUNT(DISTINCT(ACHATS.ID_ACHAT)) FROM CLIENTS LEFT JOIN ACHATS ON ACHATS.ID_CLIENT = CLIENTS.ID_CLIENT LEFT JOIN VENTES ON VENTES.ID_CLIENT = CLIENTS.ID_CLIENT GROUP BY CLIENTS.NOM?
Partager