Опитайте това:
SELECT OrderID
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
Идеята накратко е следната:
- Пребройте колко реда OrderDetailTable съответстват на OrderedTable по ItemID,
- и след това сравнете това с общия брой ItemID от OrderedTable.
Ако тези две числа са равни, даденият OrderID "съдържа" всички ItemID. Ако единият е по-малък от другия, има поне един ItemID, който не се съдържа в дадения OrderID.
В зависимост от вашите първични ключове, DISTINCT
може да не е необходимо (въпреки че не боли).