Problème de jointure multiple
Bonjour,
J'ai passé 2 heures à tenter de trouver une solution que je n'ai malheureusement pas trouvée, alors un ptit coup de main ne serait pas de refus :) Merci d'avance.
Je vous livre un exemple, où je n'arrive pas à écrire une requete qui fonctionne correctement.
Voici mes 5 tables:
- produit1(id_produit,nom,prixU)
- produit2(id_produit,nom,prixU)
- detail1(id_detail,id_produit,Q)
- detail2(id_detail,id_produit,Q)
- facutre (id_facture,...).
Ce que je souhaiterai faire, c'est d'écrire une requêtre qui me permet de calculer la somme des détails (table détail1 + table détail2) pour un id_facture donné.
D'habitude on a plutot un truc simple du genre une table produit, detail et facture et il suffit de faire une requete comme ceci:
Code:
1 2 3 4
| SELECT SUM(p.prix*d.quantite)
FROM produit p,detail d,facture f
WHERE p.id=d.id_detail AND f.id_facture=d.id_facture
GROUP BY f.id_facture |
Et ça marche à merveille.
Mais si je suis ce principe pour mes 2 tables détails et bien cela ne fonctionne pas. Voici ce que je fais par exemple (ici je compte le nombre de lignes qui correspondent avec ma facture).
Code:
1 2 3 4
| SELECT COUNT(d1.id_detail), COUNT (d2.id_detail)
FROM detail1 d1, detail2 d2, facture f
WHERE f.id_facture=d1.id_facture AND f.id_facture=d2.id_facture
GROUP BY f.id_facture |
Alors qu'il y a 3 lignes correspondates dans ma table détail1 et 2 lignes dans ma table détail2, j'obtiens un résultat curieux:
Code:
1 2
| COUNT( d1.ligne ) | COUNT( d2.id_detail )
6 | 6 |
J'ai tenté des variantes dans ma clause GROUP BY mais le problème n'a pas l'air d'être là (GROUP BY d1.id_detail etc). Donc voilà je ne sais pas comment faire pour obtenir un résultat logique de 3 | 2. Si j'arrive à faire ça, je n'aurai pas de mal à calculer les sommes des colonnes car le principe reste le même.
J'espère avoir été clair. :mouarf: