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 :
Pour récupérer tous les éléments de ma table A en comptant les relations avec la table B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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