Zkuste toto:
SELECT OrderID
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
Myšlenka je v kostce následující:
- Spočítejte, kolik řádků OrderDetailTable odpovídá OrderedTable podle ItemID,
- a poté to porovnejte s celkovým počtem ItemID z OrderedTable.
Pokud jsou tato dvě čísla stejná, dané OrderID "obsahuje" všechna ItemIDs. Pokud je jedno menší než druhé, existuje alespoň jedno ItemID, které není obsaženo v daném OrderID.
V závislosti na vašich primárních klíčích DISTINCT
nemusí být nutné (ačkoli to nebolí).