2013-11-25 39 views
0

我有以下簡化表:獲取其中的訂單行符合一定要求的訂單

tblOrders

orderID date 
--------------------- 
1   2013-10-04 
2   2013-10-05 
3   2013-10-06 

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 

我想選擇tblOrders只記錄如果任何訂單行的ProductCategory = 10。所以,如果沒有一個partic的行ular訂單有ProductCategory = 10,那麼不要返回該訂單。

我該怎麼做?

+4

你有沒有嘗試過任何東西? – Andrew

+0

Hrm,猜猜編輯我的評論太久了?下面有很多答案。我也會建議一個SQL教程,你問的是非常基本的。 [Clicky!](http://www.w3schools.com/sql/) – Andrew

+0

只是好奇,爲什麼你會選擇接受兩個幾乎相同的答案後來? –

回答

1

可以使用存在此

Select o.* 
From tblOrders o 
Where exists (
    Select 1 
    From tblOrderLines ol 
    Where ol.ProductCategory = 10 
    And ol.OrderId = o.OrderId 
) 
0

試試這個:

SELECT * 
FROM tblOrders O 
    JOIN tblOrderLines L 
    ON O.orderID = L.orderID 
WHERE L.OrderID in (SELECT orderID FROM tblOrderLines WHERE ProductCategory = 10) 
+1

不要以爲你需要這裏的連接 –

+0

是真實的,但如果你想看到這些線,也需要。 – BWS

6

這應該這樣做:

SELECT * 
FROM tblOrders O 
WHERE EXISTS(SELECT 1 FROM tblOrderLines 
      WHERE ProductCategory = 10 
      AND OrderID = O.OrderID) 
1

試試這個

SELECT DISTINCT orderId 
FROM tblOrders t1 
INNER JOIN tblOrderLines t2 ON t1.orderId = t2.orderId 
WHERE t2.ProductCategory = 10