Reliquat commande

Signaler
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021
-
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
-
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

5 réponses

Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
823
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?
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
823
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021

/*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
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
823 >
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021

je ne pourrai pas t'aider si tu ne réponds pas aux questions en #4.
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021
>
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021

table Comde



et ci dessous la table livraisons


table reliquat
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
823 >
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021

tu as écrit que tu avais ces 6 tables:
bouteuil
COMMD
Comde
Reliquats
livr
livraisons

peux-tu utiliser le bon nom de table quand tu montres les données?

que veux-tu dire par "qui transforme le reliquat"? cherches-tu à écrite une requête qui modifie une table?
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021
>
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021

je viens de modifier
Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021
>
Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021

Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021

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





Messages postés
118
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
24 mars 2021

1. Comde


2. Livraisons


3. Reliquat apres livraisons


Cmde apres une Livraisons

Messages postés
14995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
8 avril 2021
823
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