根据特定条件编写查询以选择特定外键条目

时间:2012-08-16 13:37:14

标签: sql-server sql-server-2008 tsql

所以我有一个表格FKUserIdFKProductId

如果UserId有多个产品,则可以多次列出UserId

我需要查询以获取每个ProductId 1,例如ProductId 2,但不是{{1}}。

如何开始编写这样的查询?

修改

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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

答案 2 :(得分:2)

假设您在userproduct

之间有一个桥牌表

如果你想要更多的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