Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 编写查询以选择给定特定条件的特定外键条目_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 编写查询以选择给定特定条件的特定外键条目

Sql server 编写查询以选择给定特定条件的特定外键条目,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,因此,我有一个表,其中FK代表UserId,FK代表ProductId 如果每个用户ID有多个产品,则可以多次列出 我需要查询以获取每个用户标识,例如,productID1,但productID2 我如何开始编写这样的查询 编辑: 但这是我遇到问题的部分;所有拥有产品1的用户都应该拥有产品2,但有些用户没有,因此我需要获得拥有产品1而不是产品2的用户-这是您想要的吗 select distinct userID from yourtable t where t.ProductId=@Produc

因此,我有一个表,其中FK代表UserId,FK代表ProductId

如果每个用户ID有多个产品,则可以多次列出

我需要查询以获取每个用户标识,例如,productID1,但productID2

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

编辑:


但这是我遇到问题的部分;所有拥有产品1的用户都应该拥有产品2,但有些用户没有,因此我需要获得拥有产品1而不是产品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)
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

-这是你想要的吗

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

假设您在用户和产品之间有一个桥接表

如果你想要的比身份证还多

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

假设您在用户和产品之间有一个桥接表

如果你想要的比身份证还多

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