Prøv dette:
SELECT OrderID
FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
GROUP BY OrderID
HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
Ideen er i en nøddeskal som følger:
- Tæl hvor mange OrderDetailTable-rækker der matcher OrderedTable efter vare-ID,
- og sammenlign det med det samlede antal vare-ID'er fra OrderedTable.
Hvis disse to tal er ens, "indeholder" det givne OrderID alle ItemID'er. Hvis den ene er mindre end den anden, er der mindst ét ItemID, der ikke er indeholdt i det givne OrderID.
Afhængigt af dine primære nøgler er DISTINCT
er måske ikke nødvendigt (selvom det ikke gør ondt).