1

所以我有一张桌子,有一个FKto aUserId和一个FKto a ProductId

如果它们有多个产品,则每个UserId都可以列出多次。

我需要查询以获取每个UserId具有,例如ProductId 1,但不是ProductId 2

我怎样才能开始编写这样的查询?

编辑:

但这是我遇到问题的部分;所有拥有产品 1 的用户都应该拥有产品 2,但有些没有,所以我需要获得拥有产品 1 而不是产品 2 的用户

4

3 回答 3

2
select distinct userID from yourtable t
where t.ProductId=@ProductID1
and not exists(select UserID from yourtable 
                      where Userid=t.userID and ProductID=@ProductID2)
于 2012-08-16T13:43:18.303 回答
2

- 这是你想要的吗?

SELECT 
    u.[UserID]
  , p.[ProductID]
FROM TableA a
    LEFT JOIN Users u ON
        u.[UserID] = a.[UserID]
    LEFT JOIN Products p ON
        p.[ProductID] = a.[ProductID]
WHERE a.ProductID = 1
于 2012-08-16T13:45:42.810 回答
2

假设您在user和之间有一个桥接表product

如果你想要更多然后 id

SELECT u.user_id, u.name
FROM [user] AS u
INNER JOIN user_product AS up 
        ON u.user_id = up.user_id
INNER JOIN product as p 
        ON p.product_id = up.product_id
WHERE p.id = 1

或者您可以只查询您的网桥表

SELECT up.user_id
FROM user_product AS up
WHERE up.product_id = 1
于 2012-08-16T13:46:27.317 回答