2009-05-14 3 views
0

쿼리가 있습니다. 몇 가지 자습서를 확인했지만 도움이 필요한 경우이 문서에서 다루지 않습니다.쿼리 - 그룹화 및 Aggreate 함수를 사용하는 SQL 도움말

Products, ProductImagesLookUp 및 Images 세 개의 조인 된 테이블이 있습니다.

제품에는 여러 개의 이미지가있을 수 있으며 제품 이미지 순서는 ProductImagesLookUp에 저장됩니다.

주 이미지가있는 제품 목록 (가장 낮은 주문 값을 가진 제품)을 반환해야합니다.

목록은 내 쿼리가 lowst 주문 값이 별개의 제품 목록을 철수 할이

Product 
Images 
LookUpId FileID Order ProductTitle    Price ProductId 
65  2  1 Amari Summer Party Dress 29.99  7 
66  1  2 Amari Summer Party Dress 29.99  7 
67  3  3 Amari Summer Party Dress 29.99  7 
74  4  5 Beach Cover Up     18.00  14 
75  5  4 Beach Cover Up     18.00  14 
76  7  6 Beach Cover Up     18.00  14 
77  8  7 Beach Cover Up     18.00  14 
78  9  8 Beach Cover Up     18.00  14 
79  10 9 Amari Classic Party Dress 29.95  15 
80  11 11 Amari Classic Party Dress 29.95  15 
81  12 10 Amari Classic Party Dress 29.95  15 

것 같습니다. 즉, ProductImagesLookUpId가 65 (제품 7), 74 (제품 14) 및 79 (제품 15) 인 행을 다시 가져옵니다.

미리 도움을 주셔서 감사합니다. 이 하나가 내 머리카락을 꺼내 ​​주었다! 하위 쿼리 이후로 그룹화 할 필요가 또는 집계 아무것도 없다

+0

MS SQL Server를 사용하고 있습니까? 그렇다면 어떤 버전입니까? –

답변

1
SELECT 
    l.LookupId, 
    i.FileId, 
    l.[Order], 
    p.ProductTitle, 
    p.Price, 
    p.ProductId 
FROM 
    Products p 
    INNER JOIN ProductImagesLookUp l ON l.ProductId = p.ProductId 
    INNER JOIN Images i ON i.FileId = l.FileId 
WHERE 
    i.[Order] = (
    SELECT MIN([Order]) 
    FROM ProductImagesLookUp 
    WHERE ProductId = p.ProductId 
) 

은 주어진 ProductId — 가장 낮은 Order와 하나 하나의 결과 행보다가없는 것을 보장한다.

+0

신속하고 정중 한 답변 Tomalak에게 감사드립니다. 매우 감사! – CountZero