根据第一个 table 的 ID 对第二个 table 的值求和并在第一个 table 中插入值
Summing the values from the 2nd table based on ID of the 1st table and inserting values in first table
如何在第一个 table 中显示 UkupnaCena
插入列 Cena
的总和值,其中 RacunID
在第一个 table 中等于 RacunID
在其他 table。例如,如果 RacunID
在第一个 table 中等于 1,我希望它的 UkupnaCena
等于列 Cena
中所有值的总和,其中 RacunID
是1.
表格:
我目前的程序:
Create procedure sp_RacunUpdate(
@pRacunID int,
@pStatusRacuna nvarchar(50),
@pDatum nvarchar(20),
@pOpis nvarchar(200),
@pMesto nvarchar(50),
@pKupacID int
)
as begin
Declare @pUkupnaCena decimal(20,2)
select @pUkupnaCena=sum(Cena) from Stavka
inner join Racun
on Racun.RacunID=Stavka.RacunID
Where Racun.RacunID=Stavka.RacunID
group by Stavka.RacunID
begin transaction
UPDATE Racun
SET StatusRacuna=@pStatusRacuna, Datum=@pDatum, Opis=@pOpis,Mesto=@pMesto,UkupnaCena=@pUkupnaCena,KupacID=@pKupacID
WHERE RacunID=@pRacunID
IF @@ERROR <> 0
BEGIN
ROLLBACK
END
ELSE
BEGIN
COMMIT
END
END
GO
您可以将更新查询修改为类似这样的内容
UPDATE Racun from Racun
SET UkupnaCena=(select sum(Cena) from Stavka s where s.RacunID= Racun.RacunID), Datum=@pDatum, Opis=@pOpis,Mesto=@pMesto,KupacID=@pKupacID
WHERE RacunID=@pRacunID
我相信您需要相关子查询。在 MySQL 中,这看起来像:
UPDATE Racun r
SET StatusRacuna = @pStatusRacuna,
Datum = @pDatum,
Opis = @pOpis,
Mesto = @pMesto,
KupacID = @pKupacID,
UkupnaCena = (SELECT SUM(s.Cena) FROM Stavka s WHERE s.RacunID = r.RacunId)
WHERE RacunID = @pRacunID;
但是,您的代码看起来不像MySQL;它看起来更像是 SQL 服务器。在任一数据库中,您可以执行以下操作:
UPDATE Racun
SET StatusRacuna = @pStatusRacuna,
Datum = @pDatum,
Opis = @pOpis,
Mesto = @pMesto,
KupacID = @pKupacID,
UkupnaCena = (SELECT SUM(s.Cena) FROM Stavka s WHERE s.RacunID = Racun.RacunId)
WHERE RacunID = @pRacunID;
这里唯一的区别是删除了外部查询中的 table 别名。
如何在第一个 table 中显示 UkupnaCena
插入列 Cena
的总和值,其中 RacunID
在第一个 table 中等于 RacunID
在其他 table。例如,如果 RacunID
在第一个 table 中等于 1,我希望它的 UkupnaCena
等于列 Cena
中所有值的总和,其中 RacunID
是1.
表格:
我目前的程序:
Create procedure sp_RacunUpdate(
@pRacunID int,
@pStatusRacuna nvarchar(50),
@pDatum nvarchar(20),
@pOpis nvarchar(200),
@pMesto nvarchar(50),
@pKupacID int
)
as begin
Declare @pUkupnaCena decimal(20,2)
select @pUkupnaCena=sum(Cena) from Stavka
inner join Racun
on Racun.RacunID=Stavka.RacunID
Where Racun.RacunID=Stavka.RacunID
group by Stavka.RacunID
begin transaction
UPDATE Racun
SET StatusRacuna=@pStatusRacuna, Datum=@pDatum, Opis=@pOpis,Mesto=@pMesto,UkupnaCena=@pUkupnaCena,KupacID=@pKupacID
WHERE RacunID=@pRacunID
IF @@ERROR <> 0
BEGIN
ROLLBACK
END
ELSE
BEGIN
COMMIT
END
END
GO
您可以将更新查询修改为类似这样的内容
UPDATE Racun from Racun
SET UkupnaCena=(select sum(Cena) from Stavka s where s.RacunID= Racun.RacunID), Datum=@pDatum, Opis=@pOpis,Mesto=@pMesto,KupacID=@pKupacID
WHERE RacunID=@pRacunID
我相信您需要相关子查询。在 MySQL 中,这看起来像:
UPDATE Racun r
SET StatusRacuna = @pStatusRacuna,
Datum = @pDatum,
Opis = @pOpis,
Mesto = @pMesto,
KupacID = @pKupacID,
UkupnaCena = (SELECT SUM(s.Cena) FROM Stavka s WHERE s.RacunID = r.RacunId)
WHERE RacunID = @pRacunID;
但是,您的代码看起来不像MySQL;它看起来更像是 SQL 服务器。在任一数据库中,您可以执行以下操作:
UPDATE Racun
SET StatusRacuna = @pStatusRacuna,
Datum = @pDatum,
Opis = @pOpis,
Mesto = @pMesto,
KupacID = @pKupacID,
UkupnaCena = (SELECT SUM(s.Cena) FROM Stavka s WHERE s.RacunID = Racun.RacunId)
WHERE RacunID = @pRacunID;
这里唯一的区别是删除了外部查询中的 table 别名。