Reliquat commande

remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
salut les gars, j'ai une table commande, ligne commande, livraison et ligne livraison & reliquat, quand un client passe une commande par exemple Cmd1 (art1=15,art2=10 et art3=8) et la table livraison livr1(Cmd1:art1=11,art2=10 et art3=6) la table livraison a la collonne reste a livrer reçois (art1=4,art2=0 et art3=2) donc c'est ca qui est com le reste a livré, et la table reliquat (art1=4,art2=0 et art3=2) du coup pour une prochaine commande des mem produits Cmd2 (art1=9,art2=6 et art3=16) il va cummuler la qté commandée plus le reliquat.....ce qui donne comme réliquat (art1=13,art2=6 et art3=18)
ma question est de savoir comment aditionner la qté de la table reliquat avec la table livraison pour trouver le reste à livrer dans sql server

Soyons Toujours à la disposition des autres (si la personne à bien posée son problem)

5 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peux-tu donner pour chaque table, son nom, ainsi que le nom et le type de chaque champ dans cette table?

    peux-tu ensuite montrer clairement un exemple de données qui sont enregistrées?

    ensuite, montrer le résultat que tu attends, en fonction de ces données?
    0
  2. remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention  
     
    /*table article*/
    CREATE TABLE [dbo].[bouteuil](
    	[refbtl] [nvarchar](255) NOT NULL,
    	[prixbtl] [int] NULL,
    	[txtonag] [float] NULL,
    	[stkin] [int] NULL,
    	[ordern] [int] NULL)
     
    	/*table Lign commande*/
    	CREATE TABLE [dbo].[COMMD](
    	[refcom] [int] NOT NULL,
    	[date] [date] NULL,
    	[refclicm] [nvarchar](255) NULL,
    FOREIGN KEY([refclicm])REFERENCES [dbo].[Client] ([refcli]))
     
    /*table commande*/
    CREATE TABLE [dbo].[Comde](
    	[refcmd] [int] NOT NULL,
    	[refclicmdd] [nvarchar](255) NULL,
    	[qtecmd] [int] NULL,
    	[tonagecmd] [int] NULL,
    	[montcmd] [int] NULL,
    	[margecmd] [int] NULL,
    	[gabaritcmd] [nvarchar](255) NULL,
    	[zonnecmd] [nvarchar](255) NULL,
    	[reliq] [int] NULL,
    	[cummul] [int] NULL
     FOREIGN KEY([gabaritcmd])REFERENCES [dbo].[bouteuil] ([refbtl])
     FOREIGN KEY([refclicmdd])REFERENCES [dbo].[Client] ([refcli]) 
     FOREIGN KEY([refcmd])REFERENCES [dbo].[COMMD] ([refcom])
     FOREIGN KEY([zonnecmd])REFERENCES [dbo].[zonne] ([refzone]))
     
    /*table reliquat*/
    CREATE TABLE [dbo].[Reliquats](
    	[refcomrlq] [int] NOT NULL,
    	[reflivrerlq] [int] NOT NULL,
    	[qtecomrlq] [int] NULL,
    	[qtelivrlq] [int] NULL,
    	[restrlq] [int] NULL,
    	[gabaritrlq] [nvarchar](255) NULL,
    	[zonnerlq] [nvarchar](255) NULL,
    	[Clirlq] [nvarchar](255) NULL
    FOREIGN KEY([Clirlq])REFERENCES [dbo].[Client] ([refcli])
    FOREIGN KEY([gabaritrlq])REFERENCES [dbo].[bouteuil] ([refbtl])
    FOREIGN KEY([refcomrlq])REFERENCES [dbo].[COMMD] ([refcom])
    FOREIGN KEY([reflivrerlq])REFERENCES [dbo].[livr] ([reflivr])
    FOREIGN KEY([zonnerlq])REFERENCES [dbo].[zonne] ([refzone]))
    GO
     
     /*table ligne livr*/
     CREATE TABLE [dbo].[livr](
    	[reflivr] [int] NOT NULL,
    	[datelivr] [date] NULL,
    	[refcomlivr] [int] NULL,
     FOREIGN KEY([refcomlivr])REFERENCES [dbo].[COMMD] ([refcom]))
    GO
     
    /*table livraison*/
    CREATE TABLE [dbo].[livraisons](
    	[reflivre] [int] NOT NULL,
    	[refcomlivr] [int] NOT NULL,
    	[qtelivr] [int] NULL,
    	[tonagelivr] [int] NULL,
    	[montlivr] [int] NULL,
    	[margelivr] [int] NULL,
    	[gabaritlivr] [nvarchar](255) NULL,
    	[zonnelivr] [nvarchar](255) NULL,
    	[restlivr] [int] NULL,
    	[qtecomm] [int] NULL
    FOREIGN KEY([gabaritlivr])REFERENCES [dbo].[bouteuil] ([refbtl])
    FOREIGN KEY([refcomlivr])REFERENCES [dbo].[COMMD] ([refcom])
    FOREIGN KEY([reflivre])REFERENCES [dbo].[livr] ([reflivr])
    FOREIGN KEY([zonnelivr])REFERENCES [dbo].[zonne] ([refzone]))
    GO


    ma question est de savoir comment faire la soustraction de la quantité de la table reliquat avec la table livraison pour trouver le reste à livrer dans sql server

    ou je veux-t savoir que serait le reste à livre a la fin de la journée sachant que la commande Num2 n'as pas été livrée
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu montrer clairement un exemple de données qui sont enregistrées?
      ensuite, montrer le résultat que tu attends, en fonction de ces données?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      montre-nous aussi les requêtes que tu utilises pour obtenir:
      - la quantité de la table reliquat
      - la quantité de la table livraison
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      je ne pourrai pas t'aider si tu ne réponds pas aux questions en #4.
      0
    4. remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      table Comde



      et ci dessous la table livraisons


      table reliquat
      0
    5. remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      0
  3. remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention  
     
    pour trouver la quantité du réliquat je fait ceci

    avec la livraison je fait ceci
    insert into Reliquats(refcomrlq,reflivrerlq,qtecomrlq,qtelivrlq,restrlq,gabaritrlq,zonnerlq,Clirlq)values(@refcomrlq,@reflivrerlq,@qtecomrlq,@qtelivrlq,@restrlq,@gabaritrlq,@zonnerlq,@Clirlq)";


    je commence l'insertion dans la table reliquat si la quantité livrée est inférieure à la qté commandée par exemple comd=10 mais livraison =7 la table reliquat prend le 3 par rapport au produit

    puis la prochaine comd, si je commande qté 9, il fera un update de 9+3 restants ce qui donne le reliquat devient à 12
    avec la table commande, je fait
    update Reliquats set restrlq = restrlq-@restrlq where gabaritrlq=@gabaritrlq


    or ma livraison avait comme reliquat 3, je veut faire de sorte que a ce stade qu'une requête me dise la qté à livré c'est à dire 12(du 9+3) et remet le reliquat à 0 zéro) apartir de cet update au lieu du 3 qui étais à la dernière livraison, mais ma table livraison garde jusque là 3 comme reliquat

    0
  4. remiki90 Messages postés 131 Date d'inscription   Statut Membre Dernière intervention  
     
    1. Comde


    2. Livraisons


    3. Reliquat apres livraisons


    Cmde apres une Livraisons

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    je pense que la base de données n'est pas bien conçue.
    le reliquat, est-ce la quantité encore à livrer?

    je pense qu'il est préférable de faire ainsi:
    - une table commande, qui est mise à jour uniquement quand une commande est effectuée, et contient uniquement des données à propos de la commande
    - une table livraison, qui est mise à jour uniquement quand une livraison est effectuée, et contient uniquement des données à propos de la livraison
    - une requête reliquat, qui va calculer les quantités encore à livrer
    0