跨表做乘法
还是我那个订单问题
有产品表,产品表里有单价
下单以后在订单表里获取产品的数量
然后用产品表里的单价乘以订单表里的数量,最后在发票表里得到总额
实现这个之前除了主外键做好关联,还需要注意什么?
我现在的代码是:
CREATE TRIGGER 计算总价
ON 发票
FOR UPDATE, INSERT
AS
UPDATE 发票 SET 总价 = 产品.单价 * 订单.数量
请问如何补充?
------最佳解决方案--------------------UPDATE 发票 SET 总价 = 产品.单价 * 订单.数量
from 发票 inner join 产品 on 两表主键关联
------其他解决方案--------------------CREATE TRIGGER 计算总价
ON 发票
FOR UPDATE, INSERT
AS
begin
declare @bill varchar(50)
select @bill=订单号 from inserted
update 发票 set 总价=(select sum(数量*单价) from 订单表 as x inner join 产品表 as y on x.产品编号=y.产品编号 where 订单号=@bill)
where 订单号=@bill
end
--大概就是上面的格式了
------其他解决方案--------------------如果要汇总每个发票对应的订单的总价就要用这个:
CREATE VIEW vw_ProductInvoice
AS
SELECT I.发票_Id ,
I.订单_Id ,
SUM(P.产品_单价 * O.数量) AS 总价
FROM 数据库_db.dbo.发票 AS I
INNER JOIN 数据库_db.dbo.订单 AS O ON I.订单_Id = O.订单_Id
INNER JOIN 数据库.dbo.产品 AS p ON p.产品_Id = O.产品_Id
GROUP BY I.发票_Id ,
I.订单_Id
------其他解决方案--------------------楼上二位晚上好,我尝试用试图去解决这个问题,我先给出我的代码,不过我依然有个错误提示:
CREATE VIEW vw_ProductInvoice
AS
SELECT
I.发票_Id,
I.订单_Id,
P.产品_单价 * O.数量 AS 总价
FROM 数据库_db.dbo.发票 AS I, 数据库.dbo.产品 AS P, 数据库_db.dbo.订单 AS O
inner join 订单 AS Orders ON O.订单_Id = O.订单_Id
inner join 产品 AS Item ON p.产品_Id = O.产品_Id
得到的错误提示是:Msg 4104, Level 16, State 1, Procedure vw_ProductInvoice, Line 9
The multi-part identifier "p.产品_Id" could not be bound.
我估计应该是别名的用法不对,楼上二位大侠能不能帮我检查下?我本来出现了七八个这样的错误,我自己改了下代码,还剩下这一个了,不知道怎么改了
------其他解决方案--------------------CREATE VIEW vw_ProductInvoice
AS
SELECT I.发票_Id ,
I.订单_Id ,
P.产品_单价 * O.数量 AS 总价
FROM 数据库_db.dbo.发票 AS I
INNER JOIN 数据库_db.dbo.订单 AS O ON I.订单_Id = O.订单_Id