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 :
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
Cette requête multiplie les lignes de ACHATS avec les lignes de VENTES (comme on pouvait s'y attendre).
Existerait-il un moyen élégant d'obtenir le résultat recherché ?
Dans l'exemple précédent, un moyen non élégant serait :
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
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 ?