Bonjour,
J'ai 3 tables comme ceci
La table des noms des clients
La table des adresses des clients
La table des adresses des commandes
Le marqueur permet de définir le niveau de traitement de l'information. Il prend une valeur allant de 0 à 5.
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.
J'ai alors pensé à faire comme ceci :
Mais là encore le résultat n'est pas correct.
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
J'ai 3 tables comme ceci
La table des noms des clients
a écrit :
tab1 composé de :
- id_tab (index primaire)
- tab1_nom
- id_trt (marqueur)
La table des adresses des clients
a écrit :
tab2 composé de :
- id_adresse (index primaire)
- id_tab
- tab2_adresse
- id_trt (marqueur)
La table des adresses des commandes
a écrit :
tab3 composé de :
- id_commande (index primaire)
- id_tab
- tab3_quantite
- id_trt (marqueur)
Le marqueur permet de définir le niveau de traitement de l'information. Il prend une valeur allant de 0 à 5.
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 :
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
Mais comment faire mon group by, ce n'est pas possible.
J'ai alors pensé à faire comme ceci :
$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);
Mais là encore le résultat n'est pas correct.
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