Du var tæt på
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
Med hensyn til dit "ud af nysgerrighed" spørgsmål i relationel algebra opnås dette ganske enkelt med divisionen . AFAIK no RDBMS har implementeret nogen udvidelse, der gør dette så enkelt i SQL.