我有两个表,我需要在两个表上查询一个字段的差异,然后将结果与其中一个表连接起来,这些是我的表:
-----------------------------------------------
产品: | ProductId(PK)|产品名称|
-----------------------------------------------
| 1 |养老基金|
-----------------------------------------------
| 2 |学习基金|
---------------------------------------------- -
| 3 |公积金|
-----------------------------------------------
-------------------------------------------------- ----------------
委员会: | SellerId(PK1)| ProductId(PK2)(FK)|委员会|
-------------------------------------------------- ----------------
| 11 | 1 | 10 |
-------------------------------------------------- ----------------
| 11 | 2 | 20 |
-------------------------------------------------- ----------------
| 22 | 3 | 30 |
-------------------------------------------------- ----------------
| 33 | 1 | 10 |
-------------------------------------------------- ----------------
| 33 | 2 | 20 |
-------------------------------------------------- ----------------
| 33 | 3 | 30 |
-------------------------------------------------- ----------------
当我有 SellerId 时,我需要查询所有 ProductId 和 ProductName ,卖家不要销售
e.g。如果给出 SellerId = 11 ,我应该返回一条记录(3,公积金)
如果鉴于 SellerId = 22 ,我应该得到两条记录(1,养老基金)和(2,学习基金)
如果给定 SellerId = 33,则不返回任何记录。
现在我有这个:
从产品中选择ProductId
除了选择ProductId FROM Comissions WHERE SellerId = @SellerId
此查询返回 ProductId 的差异,我需要帮助将其与 ProductId 上的产品表联系起来。< / p>
提前致谢
答案 0 :(得分:3)
试试这个:
SELECT * FROM Products
WHERE ProductId NOT IN (SELECT ProductId FROM Comissions WHERE SellerId = @SellerId)
答案 1 :(得分:1)
除了dotnetom给出的答案之外,这是使用Exists。
SELECT *
FROM Products
WHERE NOT EXISTS (
SELECT ProductId
FROM Comissions
WHERE SellerId = @SellerId
AND ProductId = Products.ProductId
)