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

Développement SQL Server Discussion :

Stock total général des magasins


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut Stock total général des magasins
    Bonjour,

    je sollicite l'aide du forum pour résoudre un problème important.
    J'ai une base de donnée SQL server qui comporte
    une table MAGASIN(
    ID_AUTO
    LBLMAGASIN)
    dans laquelle 5 magasin sont enregistrés.
    une table MAGASIN_HISTORY(
    ID_AUTO
    DATECREATE
    ID_MAGASIN
    INITIAL
    ENTREE
    SORTIE
    FINAL
    ID_PRODUIT) qui comporte plusieurs lignes des mouvement de chaque produit sur chaque magasin

    une table Produit(
    ID_AUTO
    LBLPRODUIT) qui comporte plusieurs produits.

    Mon soucis est de récupérer le stock disponible total de tous les magasins groupés par produits.

    J'obtiens via ma requete ci-dessous le stock disponible par magasin et produit. Mais je n'arrive pas à obtenir le stock total des magasin par produits

    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
    19
    20
    21
    /****** Object:  StoredProcedure [MODELE].[DEPOT_HISTORY_TOP_1_BY_PRODUIT]    Script Date: 01/04/2017 08:18:43 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
     
      ALTER PROCEDURE [MODELE].[DEPOT_HISTORY_TOP_1_BY_PRODUIT]
      @ID_PRODUIT int,
      @ID_magasin int
      AS
      SET NOCOUNT ON
     
      SELECT TOP(1)
       [ID_PRODUIT]
      , [ID_DEPOT]
      , [STK_DISPONIBLE]
     
      FROM [MODELE].[DEPOT_HISTORY] DH
      WHERE 
     [DH].[ID_PRODUIT] = @ID_PRODUIT and  [DH].[ID_MAGASIN] =   @ID_magasin
      ORDER BY [DH].[ID_AUTO] desc
    * Merci *

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Bonjour,

    Avez vous essayez la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     SELECT 
       [ID_PRODUIT]
      , [ID_DEPOT]
      , SUM([STK_DISPONIBLE])
     
      FROM       [MODELE].[DEPOT_HISTORY] DH
      WHERE     [DH].[ID_PRODUIT] = @ID_PRODUIT and  [DH].[ID_MAGASIN] =   @ID_magasin
    GROUP BY   
        [ID_PRODUIT]
      , [ID_DEPOT]
      ORDER BY [DH].[ID_AUTO] desc
    MCSA SQL SERVER |MCT | MVP Data Platform

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 149
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    D'où vient votre colonne "STK_DISPONIBLE" ?

    Votre modèle est pourri : il comprends des colonnes calculées, qui plus est historisées (pour chaque mouvement de stock, on a la quantité AVANT, APRES, plus la quantité dans chaque sens.
    Il y a AU MOINS 2 informations de trop.
    Qui plus est, j'imagine qu'il n'y a pas la moindre contrainte pour garantir que AVANT = APRES de la ligne "précédente", ni que APRES = AVANT + mouvement.
    Quant à une régul de stock passée à postériori, j'ose pas imaginer votre traitement.

    Sinon, pour en revenir à votre requête, c'est hideux d'utiliser un TOP 1 pour ça.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select p.id_auto, p.lbl_produit, sum(h.entree - h.sortie) total_dispo
    from MAGASIN_HISTORY h
    inner join PRODUIT p on p.id_auto = h.id_produit
    group by p.id_auto, p.lbl_produit
    order by p.lbl_produit
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par julien94320 Voir le message
    Bonjour,

    Avez vous essayez la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     SELECT 
       [ID_PRODUIT]
      , [ID_DEPOT]
      , SUM([STK_DISPONIBLE])
     
      FROM       [MODELE].[DEPOT_HISTORY] DH
      WHERE     [DH].[ID_PRODUIT] = @ID_PRODUIT and  [DH].[ID_MAGASIN] =   @ID_magasin
    GROUP BY   
        [ID_PRODUIT]
      , [ID_DEPOT]
      ORDER BY [DH].[ID_AUTO] desc
    merci pour la réponse, cela me donne presque la meme chose que j'obtiens avec mon select top, la quantité par produit et par Magasin.

    Moi, je veux qu'il prenne un produit, et me somme toutes la quantité de ce produit disponible dans tous les magasin

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Refléchissez un peu ...

    Dans ce cas avez vous besoin de vos magasin : NON

    Voila la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
       [ID_PRODUIT]
      , SUM([STK_DISPONIBLE])
     
      FROM       [MODELE].[DEPOT_HISTORY] DH
      WHERE     [DH].[ID_PRODUIT] = @ID_PRODUIT 
    GROUP BY   
        [ID_PRODUIT]
      ORDER BY [DH].[ID_AUTO] desc
    MCSA SQL SERVER |MCT | MVP Data Platform

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut
    Merci Julien,
    ça ne marche toujours pas. ça m'affiche la liste ordonné des stock par magasin . Mais ce dont j'ai besoin en réalité, c'est une ligne qui m'affiche le stock total de tous les magasins de l'entreprise. Merci de m'aider

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par eddyphan Voir le message
    Merci Julien,
    ça ne marche toujours pas. ça m'affiche la liste ordonné des stock par magasin . Mais ce dont j'ai besoin en réalité, c'est une ligne qui m'affiche le stock total de tous les magasins de l'entreprise. Merci de m'aider
    MERCI M. JULIEN POUR VOS APPORTS.

    J'ai essayé la requete mais j'ai encore obtenu une liste et le total général des stock des magasins ne se retrouve meme pas dans ladite.
    Est ce que ce n'est pas à cause de l'order by id_auto.

    Regardez la photo et voyez le résultat.

    merci pour tout

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Bonjour,

    Je ne vois pas de photo.
    MCSA SQL SERVER |MCT | MVP Data Platform

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut
    voici l'image.
    Merci pour vos apports
    Nom : image.jpg
Affichages : 284
Taille : 77,9 Ko

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    D'où vient votre colonne "STK_DISPONIBLE" ?



    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select p.id_auto, p.lbl_produit, sum(h.entree - h.sortie) total_dispo
    from MAGASIN_HISTORY h
    inner join PRODUIT p on p.id_auto = h.id_produit
    group by p.id_auto, p.lbl_produit
    order by p.lbl_produit

    MERCI StringBuilder, pour votre apport.
    La solution semble me convenir mais si je ne gère pas la date, je ne serai pas en mesure trouver le stock disponible à une date T.
    Merci de m'aider

Discussions similaires

  1. Procédure Stockée pour créer des TABLE dynamiquement
    Par GuyverZ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2009, 22h29
  2. Réponses: 2
    Dernier message: 20/06/2007, 19h04
  3. Réponses: 5
    Dernier message: 19/05/2006, 15h22
  4. Affichage general des icones
    Par Janitrix dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 19/12/2005, 14h13
  5. Répartir un montant total sur des mois
    Par ALLB dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 05/10/2005, 10h19

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