Bonjour à toutes et tous,
Exemple:
Je fais partie d'un établissement faisant appel à des fournisseurs externes de matériels.
J'ai deux tables. Une table COMMANDES (celle que nous passons) et une LIQUIDATIONS (celle pour payer les fournisseurs)
La première table contient les champs NUM_CMD (clé primaire) et MNT_ENGAG (le montant engagé)
La seconde table contient les champs NUM_LIQ (clé primaire), MNT_LIQ (le montant payé au fournisseur) et NUM_CMD (clé étrangère liée à COMMANDES)
Je dois faire un tableau récapitulatif (en VB.NET dans un DataGridView) grâce à une requête SQL.
Voici la mienne:
select C.NUM_CMD, sum(C.MNT_ENGAG) as Engagé, sum(L.MNT_LIQ) as Liquidé, sum(C.MNT_ENGAG)-sum(L.MNT_LIQ) as Reste from ((COMMANDES C) left join LIQUIDATIONS L on (L.NUM_CMD=C.NUM_CMD)) group by C.NUM_CMD, L.NUM_LIQ
Seulement voilà, il peut arriver qu'il y ai plusieurs liquidations pour une même commande. Par exemple, j'ai engagé un montant de 1000€ dans des fournitures et j'ai été livré en 3 fois. Donc, 3 liquidations différentes de (toujours en exemple) 500, 300 et 200€.
Et c'est là que ma requête ne fonctionne plus. Puisque j'ai 3 lignes de liquidations, il me compte 3 fois mon engagement. Ici, 3x1000=3000€ !
Y'a-t-il une solution pour que mon engagement reste à 1000€ ?
Merci d'avance...
Partager