2009-05-14 7 views
0

私はいくつかの助けが必要ですが、かなりのチュートリアルをチェックしていますが、私が見つけたものはこの問題をカバーしています。クエリー - グループ化とアグリゲート機能付きのSQLヘルプ

Products、ProductImagesLookUp、Imagesの3つのテーブルがあります。

製品には任意の数のイメージを含めることができ、製品のイメージの順序はProductImagesLookUpに格納されます。

プライマリImage(注文番号が最も低い商品)のリストを返す必要があります。

リストは、私は私のクエリは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 

のように見えます。 I. ProductImagesLookUpIdが65(Product 7)、74(Product 14)、および79(Product 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 
) 

サブクエリが単一の結果行より一つが最低Orderと任意のProductId —ために存在しないことを確実にするためのもので、または集約グループする必要はありません。

+0

迅速でエレガントな答えTomalakに感謝します。とても有難い! – CountZero

関連する問題