Du var nära
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
Angående din "av nyfikenhet" fråga i relationalgebra uppnås detta helt enkelt med divisionen . AFAIK no RDBMS har implementerat någon tillägg som gör detta så enkelt i SQL.