获取订单行满足特定要求的订单

use*_*114 0 sql sql-server

我有以下简化表:

tblOrders

orderID    date
---------------------
1          2013-10-04
2          2013-10-05
3          2013-10-06
Run Code Online (Sandbox Code Playgroud)

tblOrderLines

lineID     orderID     ProductCategory
--------------------------------------
1          1           10
2          1           3
3          1           10
4          2           3
5          3           3
6          3           10
7          3           10
Run Code Online (Sandbox Code Playgroud)

我想从tblOrders中选择记录,如果任何订单行有ProductCategory = 10.因此,如果特定订单的所有行都没有ProductCategory = 10,那么不要返回该订单.

我该怎么办?

Lam*_*mak 6

这应该做:

SELECT *
FROM tblOrders O
WHERE EXISTS(SELECT 1 FROM tblOrderLines
             WHERE ProductCategory = 10
             AND OrderID = O.OrderID)
Run Code Online (Sandbox Code Playgroud)