cs_rvroth
Messages postés4Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention11 septembre 2008
-
23 juil. 2003 à 11:59
cs_roro06
Messages postés732Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention29 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.
cs_roro06
Messages postés732Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention29 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;