根据第一个 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 别名。