如何使用一些空值连接3个表和sum列

时间:2013-12-11 02:19:49

标签: sql-server-2008

我已经找了一段时间来解决这个问题的解决方案,虽然我发现了一些类似的答案我似乎无法让他们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桌,但我没有这样的运气。再次感谢

2 个答案:

答案 0 :(得分:2)

如果我理解您的需要,您需要productcombo的总和。您可以将两者的结果结合起来

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)