如何在第一个表格中显示UkupnaCena
插入第Cena
列的和值,其中第一个表中的RacunID
等于其他表中的RacunID
。例如,如果第一个表中RacunID
等于1,我希望其UkupnaCena
等于Cena
为{1}}的列RacunID
中所有值的总和。
表:
到目前为止我的程序:
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
答案 0 :(得分:1)
您可以将更新查询修改为此类
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
答案 1 :(得分:1)
我相信你想要一个相关的子查询。在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 Server。在任一数据库中,您都可以:
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;
这里唯一的区别是删除外部查询中的表别名。