获取相关产品表中没有的所有相关产品?

时间:2013-03-27 11:35:57

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

假设我有Product和RelatedProduct表,

Product
------
ID
Name

RelatedProduct
--------------
ID
ProductID
RelatedProductID
RelatedProductName

现在我是一个@ProductID参数。我需要获取所有尚未在RelatedProduct表中添加的产品。所以,如果我有

Product
-----------
ID     Name
 1      A1
 2      A2
 3      A3
 4      A4


RelatedProduct
-----------------------------------------
ID     Name   ProductID    RelatedProductID
 1      B1       2             1
 2      B2       4             3
 3      B3       2             4

如果@ProductID = 1,那么我需要产品2,3,4。如果@ProductID = 2,那么我需要Product's 3.如果@ProductID = 4,那么我需要Product's 1,2。

1 个答案:

答案 0 :(得分:1)

select *
from    Product
where   id not in
  (select RelatedProductID
   from   RelatedProduct
   where  productID = @productID)

注意:如果产品1与产品2相关,那么产品2是否与产品1相关?你的例子明确地说不,但这种关系往往是双向的。