日期:2014-05-17  浏览次数:20667 次

跨表做乘法
还是我那个订单问题


有产品表,产品表里有单价
下单以后在订单表里获取产品的数量

然后用产品表里的单价乘以订单表里的数量,最后在发票表里得到总额

实现这个之前除了主外键做好关联,还需要注意什么?

我现在的代码是:

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