IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

requete mysql pour gestion des stocks


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 36
    Points
    36
    Par défaut requete mysql pour gestion des stocks
    Bonjour!

    Je suis en train de faire une petite application de gestion des stocks ! Alors, je gère ma base de données avec mysql.

    Bon ! J'ai deux tables, une que je nomme t_entree et une autre que je nomme t_sortie. Dans la table t_entree, j'enregistre tous les stocks ajoutés. J'identifie mes différents articles avec un code_article pour me permettre de bien vouloir faire la somme de chaque article entré. Et dans la deuxième table, j'ai presque les mêmes informations que dans la table précédente, mais seulement là, je n'enregistre que les sorties. Voici les codes de mes deux tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE IF NOT EXISTS `t_entree` (
      `art_id` int(11) NOT NULL AUTO_INCREMENT,
      `art_code` char(5) NOT NULL,
      `art_nom` varchar(20) NOT NULL,
      `art_qte` int(10) unsigned NOT NULL,
      `art_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`art_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    et la deuxième tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE IF NOT EXISTS `t_sortie` (
      `art_id` int(11) NOT NULL AUTO_INCREMENT,
      `art_code` char(5) NOT NULL,
      `art_nom` varchar(20) NOT NULL,
      `art_qte` int(10) unsigned NOT NULL,
      `art_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`art_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4
    Mon souci est de savoir comment afficher par exemple la quantité des articles restant en stock ? Est-ce que je pourrais le faire à travers une seule requête en faisant une jointure entre les deux tables ? Supposons qu'on insère un article ayant pour code df5, pour noms: stylo, et comme quantité: 500. On les insère dans la première table, et si on voulait par exemple vendre 100, on insère dans la deuxième table, mais tout en vérifiant si la quantité demandée est dispo dans la première et à la fin être en mesure de pouvoir afficher la quantité restante en faisant une sommation des articles entrés en les soustrayant à la somme des articles sortants.

    Comment est-ce que je peux construire ma requête ? ou y a t-il un autre moyen plus facile que je pourrais arriver à faire?

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Pourquoi avoir fait 2 tables en fait ?

    Une entrée de stock ou une sortie reste, d'un point de vue fonctionnel, un mouvement de stock.

    Ce mouvement peut être caractérisé par un signe + pour les entrées et par un signe - pour les sorties.

    Du coup, la requête serait une simple somme (avec une agrégation sur le numéro d'article).

    Pour votre problème, en partant du principe que l'on ne peut pas avoir de lignes dans la table sortie sans qu'il y est une ligne dans la table entrées (à vérifier avec vos règles fonctionnelles) il faudra donc faire comme vous le décrivez.


    En étape :
    - sommez la quantité par article de votre table des entrées (regardez du côté du GROUP BY)
    - sommez la quantité par article de votre table des sorties (regardez du côté du GROUP BY)
    - faire une jointure externe entre ces deux sous-requêtes et faites une soustraction des deux quantités

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 36
    Points
    36
    Par défaut requete mysql pour gestion des stocks
    bonjour, j'ai décidé de tous mettre dans une table, j'ai gardé que la table t_entree mais j'ai encore un petit souci, je voudrais effectuer que la somme des articles ayant un signe positif, donc pour les articles de toute la table en une fois. voici le résultat de ma table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    +----------+------------+---------+
    | ART_CODE | ART_NOM    | ART_QTE |
    +----------+------------+---------+
    | FG001    | BOUGIES    |     200 |
    | FG002    | ALLUMETTES |      50 |
    | FG001    | BOUGIES    |     -54 |
    | NR001    | PATTES     |    2000 |
    | NR001    | PATTES     |     250 |
    | FG002    | ALLUMETTES |     900 |
    | FG001    | BOUGIES    |     630 |
    | FG001    | BOUGIES    |    -100 |
    +----------+------------+---------+

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ART_CODE, SUM(ART_QTE) FROM t_entree
    WHERE ART_QTE > 0
    GROUP BY ART_CODE;

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    j'avais pas vu, mais vous avez un problème de normalisation.

    dans la table des mouvements il ne faut pas le nom, ni le code de votre article !

    Typiquement vous devriez avoir une table article et une table mouvement :
    Article-0,n----------Possède---------1,1-mouvement

    Quand on arrive au MPD, ca donne :
    Article(art_id, art_code, art_nom, ...)
    Mouvement(mov_id, #art_id, mov_qte)

    Ca vous facilitera le maintient de la cohérance de vos données article...

Discussions similaires

  1. Base de donnee access2003 pour gestion des stocks
    Par Eymins dans le forum Modélisation
    Réponses: 1
    Dernier message: 02/05/2010, 11h07
  2. requête seuil d'alerte pour gestion des stocks
    Par lambac dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/04/2009, 18h32
  3. Création d'une base de données pour gestion des stocks
    Par samaaantha dans le forum Modélisation
    Réponses: 8
    Dernier message: 08/05/2008, 22h13
  4. requête pour gestion des stocks
    Par dodie84 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 10/04/2008, 14h55
  5. choix de table pour gestion des stocks
    Par Piloupilou999 dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2007, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo