Bonjour,
J'ai 3 tables comme ceci
La table des noms des clients
La table des adresses des clientstab1 composé de :
- id_tab (index primaire)
- tab1_nom
- id_trt (marqueur)
La table des adresses des commandestab2 composé de :
- id_adresse (index primaire)
- id_tab
- tab2_adresse
- id_trt (marqueur)
Le marqueur permet de définir le niveau de traitement de l'information. Il prend une valeur allant de 0 à 5.tab3 composé de :
- id_commande (index primaire)
- id_tab
- tab3_quantite
- id_trt (marqueur)
Je veux savoir pour un même id_tab le nombre d'enregistrements de tab1, tab2, tab3 dont la valeur de id_trt est comprise entre 2 et 4.
J'étais parti sur ceci :
Mais comment faire mon group by, ce n'est pas possible.
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 SELECT tab1.id_tab, tab1_nom, count(tab2.id_tab) AS 'Adresse', count(tab3.id_tab) AS 'Commande' FROM tab1 LEFT OUTER JOIN tab2 ON tab1.id_tab = tab2.id_tab AND tab2.id_trt BETWEEN 2 AND 4 LEFT OUTER JOIN tab3 ON tab1.id_tab = tab3.id_tab AND tab3.id_trt BETWEEN 2 AND 4
J'ai alors pensé à faire comme ceci :
Mais là encore le résultat n'est pas correct.
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
23 $req = "SELECT tab1.id_tab, tab1_nom, count(tab2.id_tab) AS 'Adresse' FROM tab2 LEFT OUTER JOIN tab1 ON tab1.id_tab = tab2.id_tab WHERE tab2.id_trt BETWEEN 2 AND 4 GROUP BY tab2.id_tab"; $resadr=$MySql->queryAllRecords($req); $req = "SELECT tab1.id_tab, tab1_nom, count(tab3.id_tab) AS 'Tiers' FROM tab3 LEFT OUTER JOIN tab1 ON tab1.id_tab = tab3.id_tab WHERE tab3.id_trt BETWEEN 2 AND 4 GROUP BY tab3.id_tab"; $restiers=$MySql->queryAllRecords($req); $result = array_merge($resadr,$restiers);
J'espère avoir été assez clair.
Comment arriver au résultat que je souhaite avec une requête ?
Est-ce possible ?
Merci d'avance
Partager