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 refusMerci 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:
Et ça marche à merveille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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).
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 COUNT( d1.ligne ) | COUNT( d2.id_detail ) 6 | 6
J'espère avoir été clair.![]()
Partager