GROUP BY Multiple - Que pensez-vous de ma solution ?
Bonjour,
Je cherche à récupérer la liste de tous les éléments de ma table A, tout en sachant combien ils ont de relation avec la table B et la table C.
Pour récupérer tous les éléments de ma table A :
Code:
SELECT * FROM tableA
Pour récupérer tous les éléments de ma table A en comptant les relations avec la table B
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SELECT
ta.champ1,
ta.champ2,
count(1) as 'nbTableB'
FROM
tableA ta
LEFT JOIN
tableB tb
ON tb.champ1 = ta.champ1
GROUP BY
ta.champ1 |
Jusque là, je pense que vous êtes d'accord. Maintenant, je veux également savoir combien de relation avec ma table C. Mais attention, je veux toujours 1 seul TUPLE par ligne de ma table A.
J'ai donc fais une sous requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
SELECT
TAB.champ1,
TAB.champ2,
TAB.nbTableB,
count(1) as 'nbTableC',
FROM (
SELECT
TA.champ1,
TA.champ2,
count(1) as 'nbTableB'
FROM
tableA TA
LEFT JOIN
tableB TB
ON TB.champ1 = TA.champ1
GROUP BY
TA.champ1
) as TAB
LEFT JOIN
tableC TC
ON TC.champ1 = TAB.champ1 |
Mon problème, c'est que je dois faire ça pour 4 tables et j'ai une 10ène de champs à passer. Cette solution vous parait-elle bonne ? Auriez-vous une meilleur solution ?
Si vous auriez également fait comme ça, n'hésitez pas à me le dire. Merci :D