Bonjour,

je souhaite récupérer différentes informations agrégées (sum) à partir de plusieurs tables et selon différentes conditions dans une même requête sql. Et ceci afin d'alimenter une vue.

En clair :

J'ai trois tables : T_Principale, T1, T2

T_Principale contient les champs 'date', 'lieu', 'produit' et 'montant_vente'
T1 contient des infos sur le produit comme 'type_produit'
et T2 contient des infos sur le lieu comme 'pays_lieu'

T_Principale est liée à T1 et T2 par des clés étrangères.

et je voudrais obtenir quelque chose du genre :

pour chaque ensemble (date,lieu,produit), je voudrais les colonnes :

- 'montant_vente_typeProduit1' correspondant à sum(montant_vente) avec une jointure T_Principale - T1 where type_produit = 1
- 'montant_vente_typeProduit2' correspondant à sum(montant_vente) avec une jointure T_Principale - T1 where type_produit = 2
- 'montant_vente_PaysA' correspondant à sum(montant_vente) avec une jointure T_Principale - T2 where lieu_produit = A
- 'montant_vente_PaysB' correspondant à sum(montant_vente) avec une jointure T_Principale - T2 where lieu_produit = B

exemple :

T_Principale
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
 
date                  lieu                    produit              montant_vente
15/07/09            1                       1                      50
15/07/09            1                       2                      100
15/07/09            1                       1                      20
17/07/09            2                       1                      300
17/07/09            1                       1                      50
17/07/09            2                       1                      400
17/07/09            2                       1                      500
 
T1
produit           type_produit
1                   1
2                   2
 
T2
lieu                type_lieu
1                   A
2                   B

En résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
date                  lieu                    produit              montant_vente
15/07/09            1                       1                      70
15/07/09            1                       2                      100
17/07/09            2                       1                      1200
17/07/09            1                       1                      50
Je ne sais pas du tout quel type de requête utiliser : sous-requête, table temporaire, union?

J'ai tenté quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
select date, lieu, produit, 
(select sum(...) from ...requête renvoyant la somme pour le produit type 1),
(select sum(...) from ...requête renvoyant la somme pour le produit type 2),
(select sum(...) from ...requête renvoyant la somme pour le produit lieu A),
(select sum(...) from ...requête renvoyant la somme pour le produit lieu A)
from T_Principale
group by date, lieu, produit
sachant que j'ai essayé avec un group by et sans group by à l'intérieur des requêtes, sans succès.

ça me parait logique que ça soit faux mais je ne vois pas comment y remédier.

Toute idée sera la bienvenue.