2012-11-07 5 views
1

아래 코드는 내가 작성한 쿼리의 결과로 한 가지를 제외하고는 모두 잘 작동합니다. 나는 재료 이름에 대한 자료 ID 년대 있습니다재질 이름을 가져 오는 SQL

1 = bath 
2 = sink 
3 = toilet 

아래의 작품을하지만 디스플레이는 모든 재료를 다음과 같이이 표시

Select cu.FName + ' ' + cu.SName as 'Name', 
cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
cu.PostCode, 
co.DateOrdered, 
co.Material1, 
ma.MaterialName, 
co.material2, 
ma.MaterialName, 
ma.Price as 'Item Price' 
from Customers cu 
left join CustomerOrder co on co.CustomerID = cu.CustomerID 
left join ItemOrder it on it.OrderID = co.OrderID 
left join Materials ma on ma.MaterialID = co.Material1 
or co.material2 = ma.MaterialItemID or co.material3 = ma.MaterialItemID 

세면대

Material1 | MaterialName | Material2 | Material2Name | Material3 | Material3Name 
    1   Sink   2   Sink   3    Sink 
(단지 재료 혼란을 중지 나열되어 있습니다)

아무도 도움이 될 수 있습니까?

답변

2

당신이 결과를 얻기 위해 materials 테이블에 여러 번 JOIN를 사용하여 포함이 할 수있는 몇 가지 방법이 있습니다 :

Select cu.FName + ' ' + cu.SName as 'Name', 
    cu.Address1 + ', ' + cu.Address2 + ', ' + cu.Address3 as 'Dispatch Address', 
    cu.PostCode, 
    co.DateOrdered, 
    co.Material1, 
    ma1.MaterialName Material1Name, 
    co.material2, 
    ma2.MaterialName Material2Name, 
    ma1.Price as 'Item Price', 
    co.material3, 
    ma3.MaterialName Material3Name 
from Customers cu 
left join CustomerOrder co 
    on co.CustomerID = cu.CustomerID 
left join ItemOrder it 
    on it.OrderID = co.OrderID 
left join Materials ma1 
    on ma1.MaterialID = co.Material1 
left join Materials ma2 
    on co.material2 = ma2.MaterialItemID 
left join Materials ma3 
    on co.material3 = ma3.MaterialItemID 
+0

이 큰 시간을 도왔다 대단히 감사합니다 하나 개 더 질문 – Annoscia

+0

, 내가 어떻게 것 자료 ID의 가치를 요약 해주세요. ma1.price를 'item price'로 사용하는 대신 3 개의 가격을 함께 합산하는 라인을 만들 수 있습니까? – Annoscia

+0

(ma1.price + ma2.price + ma3.price)를 사용하여 항목의 총 가격을 얻을 수있는 것 같습니다. – Taryn

관련 문제