0

ProductLikeフィールド、、、およびで名前がProductId付けUserIdられたテーブルがありますLike。ユーザーが商品を気に入った場合、レコードがこのテーブルに追加さUserIdProductIdLike値(trueまたはfalse)が追加されます。各製品を持っているユーザーのリストまたはグループを取得したい。これは私がこれまで試したことですが、エラーがあります。

SELECT  p.UserId,* 
FROM    ProductLike p WHERE p.ProductId =
        (SELECT pk.ProductId FROM ProductLike pk WHERE pk.ProductLike = 1);
4

1 に答える 1

2

次のように、テーブルをエイリアスして結合できます。

SELECT p.ProductId,p.UserId,p2.UserId 
FROM ProductLike p 
JOIN ProductLike p2 ON p.ProductId = p2.ProductId
WHERE p.[Like]=1 AND p2.[Like]=1 
  AND p.UserId <> p2.UserId

これにより、同じ製品を「いいね」したすべてのユーザーの結果セットが得られます。

EDIT : 複数回いいねされたすべての製品の結果セットを取得したい場合は、次のようにします。

SELECT p.ProductId, COUNT(p.ProductId) 'Likes'
FROM ProductLike p 
WHERE p.[Like]=1 
GROUP BY p.ProductId
HAVING COUNT(p.ProductId) > 1
于 2013-01-11T20:20:10.933 に答える