0

重複を返す SQL クエリを微調整するのに問題があります。「ウィッシュリスト」からデータを返す単純なクエリです。ウィッシュリストの構造はシンプルです。それにフィードする6つのテーブル:

Products - 製品のリスト、Images - 画像のリスト、Users - ユーザーのリスト、link_ProductsImages - 製品を画像にリンクし、1 対多の関係 (潜在的に)、Wishlist - ユーザーを製品 (およびプロキシによる画像) にリンクします。

次のシナリオを設定するサンプルのふりデータを次に示します。1 人のユーザー (100) は、ウィッシュリスト (1,2) に 2 つの製品を持っています。ProductID 1 には 1 つの画像 (10) が関連付けられており、ProductID 2 には 3 つの画像 (11、12、13) が関連付けられています。

目標は、クエリで製品ごとに 1 行を返すことです。製品と画像が 1 対多であるため、ProductID 2 で重複が返されます。誰か助けてもらえますか? StackOverflow で見つけたいくつかのことを試しましたが、クエリを解決できないようです。

商品 商品 ID - 1,2

ユーザー ユーザー ID - 100

画像 ImageID - 10、11、12、13

Link_ProductsImages 製品 ID、画像 ID - 1,10 2,11 2,12 2,13

ウィッシュリスト UserID、ProductID - 100、1 100、2

  select w.WishlistID, p.*,
    isnull(i.ImageFile, 'na.jpg') as ImageFile
    from Products p
    inner join Wishlist w on w.UserID = 4 and w.ProductID = p.ProductID
    left outer join Link_ProductImage lpi on lpi.ProductID = p.ProductID
    left outer join Images i on i.ImageID = lpi.ImageID
4

2 に答える 2

0

多分あなたは意味します:

SELECT DISTINCT w.WishlistID, p.*,
isnull(i.ImageFile, 'na.jpg') as ImageFile
from Products p
inner join Wishlist w on w.UserID = 4 and w.ProductID = p.ProductID
left outer join Link_ProductImage lpi on lpi.ProductID = p.ProductID
left outer join Images i on i.ImageID = lpi.ImageID
于 2013-10-18T15:45:07.290 に答える