2

我想知道特定订单 ID 的总价。这些信息包含在这些表格中:

order_line_t

Order_ID    Product_ID    Quantity
--------    ----------    --------
1006        4             1
1006        5             2
1006        7             2

用途_t

Product_ID    Material_ID    Footage
----------    -----------    -------
4             16             20
5             15             13
7             10             16

Raw_Materials_t

Material_ID    Unit_Price
-----------    ----------
16             05.70
15             16.72
10             15.55

总成本由下式计算

Multiplying SUM ( Order_line_t.Quantity * Uses_t.Footage * Raw_Materials_t.Unit_Price) AS Total

我当前的查询只返回一个错误:

SELECT Order_line_t.Order_ID, Order_line_t.Product_ID, Uses_t.Product_ID   ,Uses_t.Footage , 
SUM ( Order_line_t.Quantity * Uses_t.Footage * Raw_Materials_t.Unit_Price) AS Total
FROM Order_line_t, Uses_t , Raw_Materials_t
WHERE  Order_line_t.Order_ID = 1006;

帮助表示赞赏!我究竟如何加入这些表?我错过了什么?

4

2 回答 2

1

首先你错过了表之间的实际连接,其次你错过了你的组

SELECT  Order_line_t.Order_ID, 
            Order_line_t.Product_ID, 
            Uses_t.Product_ID   ,
            Uses_t.Footage , 
            SUM ( Order_line_t.Quantity * Uses_t.Footage * Raw_Materials_t.Unit_Price) AS Total
FROM    Order_line_t  INNER JOIN
            Uses_t  ON  Order_line_t.Product_ID = Uses_t.Product_ID INNER JOIN
            Raw_Materials_t     ON  Uses_t.Material_ID = Raw_Materials_t.Material_ID
WHERE   Order_line_t.Order_ID = 1006;
    GROUP BY Order_line_t.Order_ID, 
            Order_line_t.Product_ID, 
            Uses_t.Product_ID   ,
            Uses_t.Footage 

编辑

试试这个

SELECT  Order_line_t.Order_ID, 
        Order_line_t.Product_ID, 
        Uses_t.Product_ID, 
        Uses_t.Footage, 
        Sum([Order_line_t].[Quantity]*[Uses_t].[Footage]*[Raw_Materials_t].[Unit_Price]) AS Total
FROM    (Order_line_t INNER JOIN 
        Uses_t ON Order_line_t.Product_ID = Uses_t.Product_ID) INNER JOIN 
        Raw_Materials_t ON Uses_t.Material_ID = Raw_Materials_t.Material_ID
GROUP BY    Order_line_t.Order_ID, 
            Order_line_t.Product_ID, 
            Uses_t.Product_ID, 
            Uses_t.Footage;

编辑

按订单 ID 总计

SELECT  Order_line_t.Order_ID,
        Sum([Order_line_t].[Quantity]*[Uses_t].[Footage]*[Raw_Materials_t].[Unit_Price]) AS Total
FROM    (Order_line_t INNER JOIN 
        Uses_t ON Order_line_t.Product_ID = Uses_t.Product_ID) INNER JOIN 
        Raw_Materials_t ON Uses_t.Material_ID = Raw_Materials_t.Material_ID
GROUP BY    Order_line_t.Order_ID;
于 2012-11-01T04:04:27.603 回答
0

我认为您需要计算每一行的成本,然后对整个订单求和。就像是:

select 
    Order_ID, sum(RowCost) as OrderCost

from (

    select
        o.Order_ID, o.Product_ID, o.Quantity,
        u.Material_ID, u.Footage,
        r.Unit_Price,
        (o.Quantity * u.Footage * r.UnitPrice) as RowCost

    from
        order_line_t o INNER JOIN
        uses_t u on o.Product_ID = u.Product_ID INNER JOIN
        Raw_materials_t r on u.Material_ID = r.Material_ID

    where
        o.Order_ID = 1006

    ) z

group by
    Order_ID
于 2012-11-01T04:28:49.433 回答