获取相关产品表中不可用的所有相关产品?
问题描述:
比方说,我有产品和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。
答
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
这些表格是如何相互关联的? – 2013-03-27 11:39:44
@JW,只是相关产品。产品ID和RelatedProduct.RelatedProductID总是属于Product.ID – user960567 2013-03-27 11:42:05