これを試してください:
SELECT OrderID
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
一言で言えば、アイデアは次のとおりです。
- ItemIDでOrderedTableに一致するOrderDetailTable行の数を数えます
- 次に、それをOrderedTableのItemIDの総数と比較します。
これらの2つの数値が等しい場合、指定されたOrderIDにはすべてのItemIDが「含まれます」。一方が他方よりも小さい場合、指定されたOrderIDに含まれていないItemIDが少なくとも1つあります。
主キーに応じて、DISTINCT
必要ないかもしれません(害はありませんが)。