2017-10-25 11 views
0

저는 닫았지만이 SQL 쿼리를 파악할 수 없습니다. 나는 SELECT 및 관련 FROM 테이블을 가지고 있지만 내 하위 쿼리 구조가 엉망이라고 생각합니다.MS Access SQL에서 상관 관계가있는 하위 쿼리 구조

질문 : 각 원료에 대한이 개 가장 저렴한 업체 (공급 업체)의 목록을 생성하는 SQL 문을 작성합니다. 결과 테이블에서 자재 ID, 재료 설명, 공급 업체 ID, 공급 업체 이름 및 공급 업체의 단가를 표시하십시오. 자재 ID와 공급자의 단가를 오름차순으로 결과 테이블을 정렬하십시오. 참고 : 원자재에 공급 업체 (공급 업체)가 하나 뿐인 경우 해당 공급 업체와 원자재의 단가도 결과 (출력) 테이블에 있어야합니다.

는 여기에 내가있어 무엇 :

SELECT Supplies_t.Material_ID, Raw_Materials_t.Material_Description, 
Vendor_t.Vendor_ID, Vendor_t.Vendor_name, Supplies_t.Unit_price 
FROM Supplies_t S1, Raw_Materials_t, Vendor_t 
WHERE Vendor_t.Vendor_ID = Supplies_t.Vendor_ID 
AND Supplies_t.Material_ID = Raw_Materials_t.Material_ID 
AND Supplies_t.Unit_price IN 
    (SELECT TOP 2 Unit_price 
    FROM Supplies_t S2 
    WHERE S1.Material_ID = S2.Material_ID 
    ORDER BY S2.Material_ID ASC, S2.Unit_price ASC) 

답변

0

문제를 해결할 수있는 올바른 테이블 별칭을 사용.

SELECT s.Material_ID, rm.Material_Description, v.Vendor_ID, v.Vendor_name, s.Unit_price 
FROM (Supplies_t s INNER JOIN 
     Raw_Materials_t rm 
     ON s.Material_ID = rm.Material_ID 
    ) INNER JOIN 
    Vendor_t v 
    ON v.Vendor_ID = s.Vendor_ID 
WHERE s.Unit_price IN (SELECT TOP 2 s2.Unit_price 
         FROM Supplies_t s2 
         WHERE s.Material_ID = s2.Material_ID 
         ORDER BY s2.Material_ID ASC, s2.Unit_price ASC 
        ); 
: 당신은 또한 명시 적 JOIN 구문을 사용한다