Jointure sur tables multiples

cs_rvroth Messages postés 4 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 11 septembre 2008 - 23 juil. 2003 à 11:59
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007 - 25 juil. 2003 à 09:48
Merci beaucoup à vous si vous pouvez résoudre ce problème!

Pour simplifer, j'ai 4 tables, T1, T2, T3 et T4
T1 contient un numéro NO1 unique,
T2 contient un numéro NO2 unique et un champ VAL2,
T3 contient un numéro NO3 qui N'EST PAS UNIQUE et un champ VAL3,
et T4 contient un numéro NO4 qui N'EST PAS UNIQUE et un champ VAL4,

Je voudrais avoir une liste de tous les enregistrements de T1 avec la somme de VAL2, de VAL3 et de VAL4

La jointure est NO1=NO2=NO3=NO4

Seulement voilà, la requête
SELECT T1.NO1, SUM(T2.VAL2), SUM(T3.VAL3), SUM(T4.VAL4)
FROM T1, T2, T3, T4
WHERE T1.NO1=T2.NO2 AND T1.NO1=T3.NO3 AND T1.NO1=T4.NO4
GROUP BY T1.NO1

me renvoie la somme de VAL2 multipliée par le nombre d'occurence de NO3 * NO4 et la somme de VAL3 multipliée par le nombre d'occurence de NO4. (Ou qq chose comme ça)

Auriez-vous une solution sans faire de vues contenant la somme de VAL4?

En réalité, il y a encore plusieurs autres tables après T4, mais le problème se pose déjà avec 3 tables.

Encore merci pour vos lumières!!!

4 réponses

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
23 juil. 2003 à 12:45
as-tu essayé avec des select imbriqué?

Nickadele
0
cs_rvroth Messages postés 4 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 11 septembre 2008
23 juil. 2003 à 14:10
J'y ai déjà songé, mais je ne vois pas comment je pourrai alors remonter les totaux au 1er niveau ...
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
23 juil. 2003 à 18:19
oui en effet, j'y avait pas pensé lol
alors te reste plus qu'a faire des view

Nickadele
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
25 juil. 2003 à 09:48
Essaye avec ça : ça doit répondre à ton besoin
SELECT reqt2.no1, reqt2.SommeDeval2, reqt3.SommeDeval3, reqt4.SommeDeval4 FROM ([SELECT t1.no1, Sum(t2.val2) AS SommeDeval2 FROM t2 RIGHT JOIN t1 ON t2.no2 = t1.no1 GROUP BY t1.no1]. AS reqt2 INNER JOIN [SELECT t1.no1, Sum(t3.val3) AS SommeDeval3 FROM t3 RIGHT JOIN t1 ON t3.no3 = t1.no1 GROUP BY t1.no1 ]. AS reqt3 ON reqt2.no1 = reqt3.no1) INNER JOIN [SELECT t1.no1, Sum(t4.val4) AS SommeDeval4 FROM t4 RIGHT JOIN t1 ON t4.no4 = t1.no1
GROUP BY t1.no1 ]. AS reqt4 ON reqt3.no1 = reqt4.no1;

Roro webDev
0
Rejoignez-nous