我已经找了一段时间来解决这个问题的解决方案,虽然我发现了一些类似的答案我似乎无法让他们toguether得到我想要的结果。 我的问题如下:我在sql server 2008中有3个表(不知道这是否重要)
Order (order_id, sales_id, Product_id,combo_id)
product(product_id, name,price)
combo(combo_id,name price)
销售有什么不重要。现在我想得到一个销售ID的所有价格的总和,但事情是每一行bouth product_id或combo_id将为null我似乎无法得到使用3个表之间的内部联接的结果,我认为我真的迷失了这个,所以我会得到很多帮助,我可以获得 我也尝试以下部分好结果
SELECT SUM(ISNULL(Combo.price, 0)) AS Expr1
FROM Order INNER JOIN
Combo ON Order.combo_id = Combo.combo_id
WHERE (Order.sales_id = @id)
我想做类似的事情加入3桌,但我没有这样的运气。再次感谢
答案 0 :(得分:2)
如果我理解您的需要,您需要product
和combo
的总和。您可以将两者的结果结合起来
SELECT SUM(X.Expr1) AS Expr1
FROM
(
SELECT SUM(ISNULL(Combo.price, 0)) AS Expr1
FROM [Order] INNER JOIN
Combo ON [Order].combo_id = Combo.combo_id
WHERE ([Order].sales_id = @id)
UNION ALL
SELECT SUM(ISNULL(Product.price, 0)) AS Expr1
FROM [Order] INNER JOIN
Product ON [Order].Product_id = Product.Product_id
WHERE ([Order].sales_id = @id)
) X
答案 1 :(得分:2)
试试这个
SELECT SUM(ISNULL(Combo.price, 0)) AS Expr1, isnull(max(product.Price), 0.00) as ProdPRice
FROM Order left outer join
Combo ON Order.combo_id = Combo.combo_id
left outer join product on Order.Product_ID = product.Product_ID
WHERE (Order.sales_id = @id)