获取相关产品表中不可用的所有相关产品?

问题描述:

比方说,我有产品和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,那么我需要Product的2,3,4。如果@ProductID = 2,那么我需要Product's 3.如果@ProductID = 4,那么我需要Product的1,2。

+0

这些表格是如何相互关联的? – 2013-03-27 11:39:44

+0

@JW,只是相关产品。产品ID和RelatedProduct.RelatedProductID总是属于Product.ID – user960567 2013-03-27 11:42:05

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

注:如果产品1与产品2有关,产品2是否也与产品1有关?你的例子明确地说不,但通常这种关系是双向的。

+0

我测试谢谢,但我认为你失去了联盟选择@productID – user960567 2013-03-27 11:48:43