2016-12-06 1 views
0

以下のシナリオがあります。私は、出力を取得する必要があります....私はテーブルの受注(OrderIdで、アイテムID)を持っていると私はアイテムID 1と2は、上記の表のデータごとにsimulataneoudslyItemId 1と2のすべての注文を同時に受け取ります

OrderId ItemId 
1000  1 
1001  2 
1002  1 
1002  2 
1002  3 
1003  1 
1003  2 
1004  4 
1004  5 
1005  3 
1006  1 
1006  3 

来ているすべての注文を取得し、お願いしたいと思いますOrderIdで1002および1003

答えて

3

使用COUNTHAVING

SELECT OrderId 
FROM Orders 
WHERE 
    ItemId IN(1, 2) 
GROUP BY OrderId 
HAVING COUNT(ItemId) = 2 

ItemId重複はOrderId、使用中に許可されている場合:

ネストされたクエリを使用して
HAVING COUNT(DISTINCT ItemId) = 2 

ONLINE DEMO

+1

@Matt私も思ったものです。私はそれを含めるでしょう。 –

0

別のオプション、次のようになります。

SELECT orderId 
FROM ORDERS o 
WHERE o.itemId = 1 
AND EXISTS (SELECT 'X' 
       FROM ORDERS o1 
      WHERE o1.orderId = o.orderId 
       AND o1.itemId = 2); 

ONLINE DEMO

関連する問題