Bonjour à tous!
Voilà, je suis en train de développer une application de gestion de stock, et arrivant dans la partie de calculation du stock, j'ai une difficulté à élaborer une requête SQL.
Base de données: Plusieurs tables dont la table "transactions" contenant les champs suivants:
id_transaction, fk_medicationDetail, fk_partnerFrom, fk_partnerTo, quantity, realQuantity, dateTransaction, dateModification, status, fk_lot.
Le principe est le suivant: lorsqu'on crée un mouvement de stock, celui-ci sera enregistré par une transaction d'un partenaire à l'autre. Ceci pour un certain médicament (fk_medicationDetail) et pour un lot particulier (fk_lot).
Ce que j'aimerais faire, c'est:
Pour un fk_médicamentDetail, calculer pour chaque partenaire le nombres d'entrée de stock(somme de la quantité pour fk_partnerTo = mon partenaire) et les sorties (somme de la quantite pour fk_partnerFrom = monPartenaire).
La requête que j'ai écrite fait cette calculation, mais ne gère pas les partenaires. Je suis obligé de faire un for each partenaire dans mon programme et exécuter la requête pour chaque partenaire.
Voici la requête que j'ai pour le moment:
Voici quelques données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SQL = "SELECT " & _ " (SELECT Sum(quantity) FROM transactions WHERE status=1 AND transactions.fk_partnerTo=" & fk_partner & " AND fk_medicationDetail=" & fk_medicationDetail & ") as incoming," & _ " (SELECT Sum(realQuantity) FROM transactions WHERE status=1 AND transactions.fk_partnerTo=" & fk_partner & " AND fk_medicationDetail=" & fk_medicationDetail & ") as Realincoming," & _ " SUM(quantity) AS outgoing, (incoming - realIncoming) as missing, (incoming-outgoing) as stock FROM transactions" & _ " WHERE transactions.fk_partnerFrom=" & fk_partner & _ " AND fk_medicationDetail=" & fk_medicationDetail & _ " AND status=1"
Donc comme je l'ai dit, je fais un for...each pour chaque partenaire et ensuite chaque ligne, je l'ajoute dans ma grille pour affichage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 id_transaction fk_medicationDetail fk_partnerFrom fk_partnerTo quantity realQuantity dateTransaction dateModification status fk_lot 31 20 6 1 1000 1000 01.09.2007 1 14 32 20 1 7 100 100 01.09.2007 1 14 34 20 6 1 1000 1000 05.09.2007 1 15 35 20 6 1 1000 1000 10.09.2007 1 14 38 20 6 1 11 11 10.09.2007 1 14 39 20 6 1 10 10 19.09.2007 1 14 40 20 1 7 100 100 01.08.2007 1 14 41 20 1 7 111 0 01.08.2007 0 14 42 20 1 7 100 100 03.08.2007 1 14 43 20 6 1 1000 1000 10.08.2007 1 14 44 20 1 10 100 100 10.08.2007 1 14 45 20 1 1 20 0 21.09.2007 0 14 46 20 1 7 10 0 21.09.2007 0 20 47 20 1 10 1111 1111 21.09.2007 1 15 48 25 6 1 1000 0 21.09.2007 0 0 49 25 6 1 1111 0 21.09.2007 0 0 50 25 6 1 200 0 21.09.2007 0 0
Je développe en VB.NET.
Voilà, j'espère que qqn aura une petite idée pour que je puisse terminer cette partie.
Merci d'avance à tous!
Ciao,
P.
Partager