Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3195 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Requete gestion stock ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Requete gestion stock ???

n°2174365
bneben
'Ben Gwin' de son vrai nom.
Posté le 06-02-2013 à 18:52:20  profilanswer
 

Salut à tous,
 
j'ai une question à propos d'une requête pour gérer les stock de pièce de mon taff. C'est un log que je dev en ce moment (VB2010).
 
Voila le topo :  
 
j'ai 4 tables =
-> t_mouvements
-> t_numPièces
-> t_comptes
-> t_produits
 
je taff dans les PDA, mais on va prendre le monde automobile pour que ce soit plus simple :D
Chaque numéro de pièce (0001 par exemple) est rattaché à un compte (on a un stock pour chaque GROS client=1 compte), chaque numéro de pièce est aussi rattaché à un produit (une "206" de peugeot par exemple).
J'enregistre donc un mouvement à chaque modification du stock, qui comprend : ref du mouvement + nuémro de pièce + E/S (entrée ou sortie) + compte + Qté + garantie + (d'autre truc mais pas obligatoire).

Code :
  1. ch_id  ch_refMouv  ch_idNumPiece  ch_idCompte  ch_quantite  ch_date  ch_garantie  ch_type  ch_raison
  2. 10  INVENT_F2013  6  1  12  01/02/2012  1  Entrée  Inventaire


 
On peut donc dire qu'un numéro de pièce peut avoir une "Entrée" avec "10" en quantité, et plusieurs "Sortie" avec "1" en quantité (par exemple)
 
Ma question est donc : comment faire pour additionner et soustraire les quantités par numéro de pièce, avec "Entrée" pour un ajout, et "Sortie" pour une pièce qui sort du stock.
 
Toute les pièces doivent être afficher dans un tableau (DataGridView), et avec leur quantité... J'avais pensé à faire 2 requetes, une pour les "Entrée" et une pour les "Sortie", mais ca risque d'être galère pour afficher le tout dans le DataGrid......
 
 
Un peu d'aide serait donc la bienvenue ^^

mood
Publicité
Posté le 06-02-2013 à 18:52:20  profilanswer
 

n°2174408
lasnoufle
La seule et unique!
Posté le 06-02-2013 à 22:01:44  profilanswer
 

Je propose:

SELECT m.ch_idNumPiece, SUM(m.ch_quantite)
FROM (
  SELECT in.ch_idNumPiece, in.ch_quantite
  FROM t_mouvements in
  WHERE in.ch_type = 'Entrée'
  UNION ALL
  SELECT out.ch_idNumPiece, -out.ch_quantite
  FROM t_mouvements out
  WHERE out.ch_type = 'Sortie') m;


Ca te file le delta pour chaque numero de piece une fois tous les mouvement pris en compte.
Attention: piece sans mouvement = n'apparaitra pas dans le resultat (simple a prendre en compte mais peut provoquer des bugs si on ne fait pas attention, et encore faut-il s'en apercevoir).


Message édité par lasnoufle le 06-02-2013 à 22:02:27

---------------
C'était vraiment très intéressant.
n°2174427
Oliiii
Posté le 07-02-2013 à 08:21:27  profilanswer
 

Je ferai plutot ca comme ca pour eviter 2 queries:

Code :
  1. SELECT ch_idNumPiece,
  2.  ch_idCompte,
  3.  SUM(CASE WHEN ch_type = 'Entrée' THEN ch_quantite
  4.           WHEN ch_type = 'Sortie' THEN ch_quantite * (-1)
  5.           ELSE 0 END) ch_quantite
  6. FROM t_mouvements
  7. GROUP BY ch_idNumPiece, ch_idCompte


Message édité par Oliiii le 07-02-2013 à 08:23:43
n°2174429
bneben
'Ben Gwin' de son vrai nom.
Posté le 07-02-2013 à 08:49:03  profilanswer
 

Haaaaaa des réponses :D je vais tester cela ce soir, je vous tiens au courant :)

n°2174640
bneben
'Ben Gwin' de son vrai nom.
Posté le 07-02-2013 à 21:51:12  profilanswer
 

Bon merci à vous deux, j'ai pris la solution de Oliiii et j'ai pondu cela :

Code :
  1. SELECT A.ch_id, A.ch_idNumPiece, A.ch_idCompte, A.ch_type, MAX(A.ch_date), B.ch_numero, B.ch_description, C.ch_nomCompte, D.ch_nomProduit,
  2. SUM(
  3. CASE WHEN A.ch_type = 'Entrée'
  4. THEN A.ch_quantite
  5. WHEN A.ch_type = 'Sortie'
  6. THEN A.ch_quantite * ( -1 )
  7. ELSE 0
  8. END ) qte
  9. FROM t_mouvements AS A, t_numpiece AS B, t_comptes AS C, t_produits AS D
  10. WHERE A.ch_idNumPiece=B.ch_id AND A.ch_idCompte=C.ch_id AND B.ch_idProduit=D.ch_id
  11. GROUP BY A.ch_idNumPiece, A.ch_idCompte
  12. ORDER BY STR_TO_DATE(A.ch_date,'%d/%m/%Y')


 
Et ca a à l'air de fonctionner :)


Message édité par bneben le 07-02-2013 à 21:51:32
n°2178461
bneben
'Ben Gwin' de son vrai nom.
Posté le 03-03-2013 à 22:45:31  profilanswer
 

Re-salut à tous,
j'ai de nouveau besoin d'un peu de votre aide (et temps) pour m'aider à résoudre mon nouveau problème. J'ai donc continué mon logiciel, surtout la partie gestion des pièces/mouvements... Bref tous fonctionne bien :)
 
Maintenant je me lance dans les stats, et c'est là que ca se complique.
J'ai entre autre besoin de ceci :  
Afficher sous forme de graph (ca c'est OK) la valorisation du stock par produits (206 dans mon exemple du 1er post, donc valoriser le stock d'embrayage + jante + volant etc). J'ai bien tenté 2-3 truc mais ca donne pas les résultats escomptés...
 
En résultat : je n'ai besoin que de l'ID du produit, et du stock en euros des pièces de ce produit ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Requete gestion stock ???

 

Sujets relatifs
SQL vers CSVUne requête SQL qui finit en OR DIE sans que je comprenne pourquoi...
MS SQL Server 2005 Shrink FileConvertir un Varchar en int avec le SQL
Faire défiler le résultat d'une requête[Résolu] Changement mot de passe SQL chez Free ?
stage en licence troisième année economie gestionScript de traitement SQL
Script de traitement SQL 
Plus de sujets relatifs à : [SQL] Requete gestion stock ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR