Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb de requete update

5 réponses
Avatar
Etudiant
bonsoir, je suis face a un probleme de mis a jour
je dispose de 2 tables

Tbl_DetailCmd
IdDetailCmd int
IdCmd int 'Le detail est lie a une commande par cette id (Cle etrangere)
IdPieceDetachee int
Qte int 'nbre de piece detachee commande

Tbl_Stock
IdStock int
IdPieceDetachee int
NbEnStock int

Je souhaite faire une mis a jour sur le champ NbEnStock de la table stock.

CREATE PROCEDURE [SPUStockPiece]

@IdCmd int

AS

IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece =
@IdCmd)
BEGIN
UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + (SELECT
Tbl_DetailCmdPiece.Qte FROM Tbl_DetailCmdPiece,Tbl_StockPieceDetachee
WHERE Tbl_DetailCmdPiece.IdPieceDetachee =
Tbl_StockPieceDetachee.IdPieceDetachee)
WHERE Tbl_StockPieceDetachee.IdPieceDetachee = (SELECT
Tbl_DetailCmdPiece.IdPieceDetachee FROM Tbl_DetailCmdPiece WHERE
IdCmdPiece = @IdCmd)
END
GO

elle me retourne une erreur en medisant qu'il selectionne trop de ligne,
savez vous ce qu'il faut changer pour que cela marche

merci

5 réponses

Avatar
Etudiant
en fait mon probleme vient du fait que je doit mettre le stock a jour
pour chaque ligne DetailCmd

Comment faire?
Avatar
Philippe T [MS]
Bonjour,

Quelqeu chose du genre :

CREATE PROCEDURE [SPUStockPiece]
(
@IdCmd int
)
AS
BEGIN
IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece @IdCmd)
BEGIN

UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + Tbl_DetailCmdPiece.Qte
FROM Tbl_StockPieceDetachee
INNER JOIN Tbl_DetailCmdPiece ON
Tbl_StockPieceDetachee.IdPieceDetachee = Tbl_DetailCmdPiece.IdPieceDetachee
WHERE IdCmdPiece = @IdCmd

END
END
GO


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Etudiant" wrote in message
news:exhgSQa$
bonsoir, je suis face a un probleme de mis a jour
je dispose de 2 tables

Tbl_DetailCmd
IdDetailCmd int
IdCmd int 'Le detail est lie a une commande par cette id (Cle etrangere)
IdPieceDetachee int
Qte int 'nbre de piece detachee commande

Tbl_Stock
IdStock int
IdPieceDetachee int
NbEnStock int

Je souhaite faire une mis a jour sur le champ NbEnStock de la table stock.

CREATE PROCEDURE [SPUStockPiece]

@IdCmd int

AS

IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece > @IdCmd)
BEGIN
UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + (SELECT
Tbl_DetailCmdPiece.Qte FROM Tbl_DetailCmdPiece,Tbl_StockPieceDetachee
WHERE Tbl_DetailCmdPiece.IdPieceDetachee > Tbl_StockPieceDetachee.IdPieceDetachee)
WHERE Tbl_StockPieceDetachee.IdPieceDetachee = (SELECT
Tbl_DetailCmdPiece.IdPieceDetachee FROM Tbl_DetailCmdPiece WHERE
IdCmdPiece = @IdCmd)
END
GO

elle me retourne une erreur en medisant qu'il selectionne trop de ligne,
savez vous ce qu'il faut changer pour que cela marche

merci


Avatar
Fred BROUARD
la requête suivante :

UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + DCP.Qte
FROM Tbl_StockPieceDetachee SPD
INNER JOIN Tbl_DetailCmdPiece DCP
ON SDP.IdPieceDetachee = DCP.IdPieceDetachee
WHERE DCP.IdCmdPiece = @IdCmd

Suffit largement. Pas besoin de cursor ni d'exists, le code sera plus léger et
plus performant.

Vérifier cepandant l'unicité de la pièces dans la table Tbl_DetailCmdPiece,
sinon, faire un SUM(DCP.Qte).


A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Etudiant a écrit:
bonsoir, je suis face a un probleme de mis a jour
je dispose de 2 tables

Tbl_DetailCmd
IdDetailCmd int
IdCmd int 'Le detail est lie a une commande par cette id (Cle etrangere)
IdPieceDetachee int
Qte int 'nbre de piece detachee commande

Tbl_Stock
IdStock int
IdPieceDetachee int
NbEnStock int

Je souhaite faire une mis a jour sur le champ NbEnStock de la table stock.

CREATE PROCEDURE [SPUStockPiece]

@IdCmd int

AS

IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece =
@IdCmd)
BEGIN
UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + (SELECT
Tbl_DetailCmdPiece.Qte FROM Tbl_DetailCmdPiece,Tbl_StockPieceDetachee
WHERE Tbl_DetailCmdPiece.IdPieceDetachee =
Tbl_StockPieceDetachee.IdPieceDetachee)
WHERE Tbl_StockPieceDetachee.IdPieceDetachee = (SELECT
Tbl_DetailCmdPiece.IdPieceDetachee FROM Tbl_DetailCmdPiece WHERE
IdCmdPiece = @IdCmd)
END
GO

elle me retourne une erreur en medisant qu'il selectionne trop de ligne,
savez vous ce qu'il faut changer pour que cela marche

merci


Avatar
Etudiant
merci beaucoup dire que ca faisiat une heure que je cherchais
merci
"Philippe T [MS]" a écrit dans le message de
news:%23pBsdXf$
Bonjour,

Quelqeu chose du genre :

CREATE PROCEDURE [SPUStockPiece]
(
@IdCmd int
)
AS
BEGIN
IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece


> @IdCmd)
BEGIN

UPDATE Tbl_StockPieceDetachee
SET NbEnStock = NbEnStock + Tbl_DetailCmdPiece.Qte
FROM Tbl_StockPieceDetachee
INNER JOIN Tbl_DetailCmdPiece ON
Tbl_StockPieceDetachee.IdPieceDetachee Tbl_DetailCmdPiece.IdPieceDetachee
WHERE IdCmdPiece = @IdCmd

END
END
GO


Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Etudiant" wrote in message
news:exhgSQa$
> bonsoir, je suis face a un probleme de mis a jour
> je dispose de 2 tables
>
> Tbl_DetailCmd
> IdDetailCmd int
> IdCmd int 'Le detail est lie a une commande par cette id (Cle etrangere)
> IdPieceDetachee int
> Qte int 'nbre de piece detachee commande
>
> Tbl_Stock
> IdStock int
> IdPieceDetachee int
> NbEnStock int
>
> Je souhaite faire une mis a jour sur le champ NbEnStock de la table


stock.
>
> CREATE PROCEDURE [SPUStockPiece]
>
> @IdCmd int
>
> AS
>
> IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece > > @IdCmd)
> BEGIN
> UPDATE Tbl_StockPieceDetachee
> SET NbEnStock = NbEnStock + (SELECT
> Tbl_DetailCmdPiece.Qte FROM Tbl_DetailCmdPiece,Tbl_StockPieceDetachee
> WHERE Tbl_DetailCmdPiece.IdPieceDetachee > > Tbl_StockPieceDetachee.IdPieceDetachee)
> WHERE Tbl_StockPieceDetachee.IdPieceDetachee = (SELECT
> Tbl_DetailCmdPiece.IdPieceDetachee FROM Tbl_DetailCmdPiece WHERE
> IdCmdPiece = @IdCmd)
> END
> GO
>
> elle me retourne une erreur en medisant qu'il selectionne trop de ligne,
> savez vous ce qu'il faut changer pour que cela marche
>
> merci




Avatar
Philippe T [MS]
Bonjour,

Pas de problème. C'est toujours un plaisir d'avoir quelqu'un de satisfait
!!! :-)

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Etudiant" wrote in message
news:OQSWOxf$
merci beaucoup dire que ca faisiat une heure que je cherchais
merci
"Philippe T [MS]" a écrit dans le message


de
news:%23pBsdXf$
> Bonjour,
>
> Quelqeu chose du genre :
>
> CREATE PROCEDURE [SPUStockPiece]
> (
> @IdCmd int
> )
> AS
> BEGIN
> IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE


IdCmdPiece
> > @IdCmd)
> BEGIN
>
> UPDATE Tbl_StockPieceDetachee
> SET NbEnStock = NbEnStock + Tbl_DetailCmdPiece.Qte
> FROM Tbl_StockPieceDetachee
> INNER JOIN Tbl_DetailCmdPiece ON
> Tbl_StockPieceDetachee.IdPieceDetachee > Tbl_DetailCmdPiece.IdPieceDetachee
> WHERE IdCmdPiece = @IdCmd
>
> END
> END
> GO
>
>
> Phil.
> ________________________________________________________
> Philippe TROTIN http://blogs.msdn.com/ptrotin
> Microsoft Services France http://www.microsoft.com/france
>
> "Etudiant" wrote in message
> news:exhgSQa$
> > bonsoir, je suis face a un probleme de mis a jour
> > je dispose de 2 tables
> >
> > Tbl_DetailCmd
> > IdDetailCmd int
> > IdCmd int 'Le detail est lie a une commande par cette id (Cle


etrangere)
> > IdPieceDetachee int
> > Qte int 'nbre de piece detachee commande
> >
> > Tbl_Stock
> > IdStock int
> > IdPieceDetachee int
> > NbEnStock int
> >
> > Je souhaite faire une mis a jour sur le champ NbEnStock de la table
stock.
> >
> > CREATE PROCEDURE [SPUStockPiece]
> >
> > @IdCmd int
> >
> > AS
> >
> > IF EXISTS (SELECT IdCmdPiece FROM Tbl_DetailCmdPiece WHERE IdCmdPiece


> > > @IdCmd)
> > BEGIN
> > UPDATE Tbl_StockPieceDetachee
> > SET NbEnStock = NbEnStock + (SELECT
> > Tbl_DetailCmdPiece.Qte FROM Tbl_DetailCmdPiece,Tbl_StockPieceDetachee
> > WHERE Tbl_DetailCmdPiece.IdPieceDetachee > > > Tbl_StockPieceDetachee.IdPieceDetachee)
> > WHERE Tbl_StockPieceDetachee.IdPieceDetachee = (SELECT
> > Tbl_DetailCmdPiece.IdPieceDetachee FROM Tbl_DetailCmdPiece WHERE
> > IdCmdPiece = @IdCmd)
> > END
> > GO
> >
> > elle me retourne une erreur en medisant qu'il selectionne trop de


ligne,
> > savez vous ce qu'il faut changer pour que cela marche
> >
> > merci
>
>