bonjour, après plusieurs tentatives je viens a vous en espérant avoir une réponse. J'ai une requête sql qui doit me retourner la somme des ventes et quantité en stock des différents produits. pour cela j'ai choisir une jointure externe pour pourvoir avoir tous les produits et ensuite avoir les ventes et les stock restant de chacun de ces produits. le problème c'est que cette requête me retourne des valeurs supérieur a ce qui est réelement présent dans la base de données comme s'il additionnait plusieurs fois les mêmes valeurs et ce qui me parait incompréhensible du faite des restrictions faites dans la requête qui devrait éviter cela. voici la requêtele resultat retourné pour un produit X est excessivement élevée par rapport a la valeur réel contenu dans la table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 select e.CODE_PRODUIT "Code Produit",e.DESIGNATION "Designation", to_char(NVL(round(sum(t.QTE_VEN)),0),'999G999G999G999', 'nls_numeric_characters='', ''') "Qte Vendue", to_char(NVL(round(sum(t.VALEUR_VENTE)),0) ,'999G999G999G999', 'nls_numeric_characters='', ''') "C.A.H.T", to_char(NVL( round(sum(t.MARGE_HT)),0) ,'999G999G999G999', 'nls_numeric_characters='', ''') "Marge HT", to_char(NVL(round(sum(s.QUANTITE) ),0),'999G999G999G999', 'nls_numeric_characters='', ''') "Qte Stock", to_char(NVL(round(sum(s.VALEUR_PRIX_REV) ),0),'999G999G999G999', 'nls_numeric_characters='', ''') "Valeur du stock" FROM PRODUIT e LEFT OUTER JOIN VENTE_JOUR t on(e.CODE_PRODUIT=t.CODE_PRODUIT AND t.DATE_GENERATION between '". $_POST['date'] . "' and '" . $_POST['date1'] . "') LEFT OUTER JOIN STOCK s on(e.CODE_PRODUIT=s.CODE_PRODUIT and s.DATE_GENERATION ='". $_POST['date1'] . "' ) group by e.CODE_PRODUIT,e.DESIGNATION order by NVL(round(sum(t.VALEUR_VENTE)),0) desc
Aussi en mettant une jointure entre 2 tables j'ai les bons résultats
Comment resourdre cela car j'ai besoin de lier les trois table pour avoir ces différents infos sur une même page. je precise que mon SGBDR est ORACLE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select e.CODE_PRODUIT "Code Produit",e.DESIGNATION "Designation", to_char(NVL(round(sum(t.QTE_VENDUE)),0),'999G999G999G999', 'nls_numeric_characters='', ''') "Qte Vendue", to_char(NVL(round(sum(t.VALEUR_VENTE)),0) ,'999G999G999G999', 'nls_numeric_characters='', ''') "C.A.H.T", to_char(NVL( round(sum(t.MARGE_HT)),0) ,'999G999G999G999', 'nls_numeric_characters='', ''') "Marge HT", to_char(round((sum(t.VALEUR_VENTE)-sum(t.VALEUR))*100/nullif(sum(t.VALEUR_VENTE),0),2),'999G999G999G999D99', 'nls_numeric_characters='', ''') "TAUX" FROM PRODUIT e LEFT OUTER JOIN VENTE_JOUR t on(e.CODE_PRODUIT=t.CODE_PRODUIT) AND t.DATE_GENERATION between '". $_POST['date'] . "' and '" . $_POST['date1'] . "' group by e.CODE_PRODUIT,e.DESIGNATION order by NVL(round(sum(t.VALEUR_VENTE)),0) desc
Merci de vos aident
Partager