我有一个复杂的查询,其中包含一些动态sql,部分取决于checkboxlist。这是我现在难倒的部分(脑屁?)。
简单示例:
表A(id,name)
表B(id,Aid,Cid)
表C(身份证,颜色)
让我们说表A有:
1,鲍勃 蒂姆 3,皮特和表C有:
1,红色 2,蓝色 3,绿色
现在表B有
<1,1> 1,1 2,1,2 3,3,2所以鲍勃最喜欢的颜色是红色和蓝色和皮特最喜欢的颜色只有蓝色。
如何查询以便我只从表A中检索具有两者红色和蓝色的最喜欢颜色的行。我不想在我的结果集中看到Pete。
答案 0 :(得分:2)
您希望使用INTERSECT运算符来获取两者匹配,但这只是SQL 2005+。
SELECT name FROM TableA
WHERE ID IN (SELECT Aid FROM TableB WHERE CId = 1
INTERSECT
SELECT Aid FROM TableB WHERE CId = 2)
答案 1 :(得分:0)
SELECT sr.receiving_id, sc.collection_id FROM stock_collection as sc, stock_requisation as srq, stock_receiving as sr WHERE (sc.stock_id = '" & strStockID & "' AND sc.datemm_issued = '" & strMM & "' AND sc.qty_issued >= 0 AND sc.collection_id = srq.requisition_id AND srq.active_status = 'Active') OR (sr.stock_id = '" & strStockID & "' AND sr.datemm_received = '" & strMM & "' AND sr.qty_received >= 0)