Probeer dit:
SELECT OrderID
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
Het idee is in een notendop als volgt:
- Tel hoeveel OrderDetailTable-rijen overeenkomen met OrderedTable op ItemID,
- en vergelijk dat dan met het totale aantal Item-ID's van OrderedTable.
Als deze twee getallen gelijk zijn, "bevat" de opgegeven OrderID alle ItemID's. Als de ene kleiner is dan de andere, is er ten minste één ItemID die niet in de opgegeven OrderID zit.
Afhankelijk van uw primaire sleutels, de DISTINCT
is misschien niet nodig (hoewel het geen pijn doet).