2012-11-01 1 views
2

특정 주문 ID의 총 가격을 알고 싶습니다. 이 정보는이 테이블에 포함된다MS Access SQL 쿼리 - 3 개의 테이블에 합류하여 총 주문 가격

Order_line_t

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

Uses_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 

을 총 비용

계산한다3210

마이 현재 쿼리는 오류를 반환합니다 :

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; 

도움말 감사합니다! 이 테이블을 정확히 조인하려면 어떻게해야합니까? 나는 무엇을 놓치고 있습니까?

답변

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 
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 
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 

편집

하여 그룹 누락 된

주문 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; 
+0

좋아, 내가 빨리 당신을 찾을 것입니다. –

+0

이것은 더 좋아 보입니다! 그것은 너무 일하고있다! 그러나 이제는 각 제품의 총계를 나타내는 3 개의 행이 표시됩니다. 하지만 Order_ID와 Total으로 1 행 만 있으면됩니다. – mmenschig

+0

OK, 변경됩니다. –

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 
+0

동일한 구문 오류가 발생합니다. – mmenschig