Je was dichtbij
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
Wat betreft uw "uit nieuwsgierigheid" vraag in relationele algebra, dit wordt eenvoudig bereikt met divisie . AFAIK no RDBMS heeft een extensie geïmplementeerd die dit zo eenvoudig maakt in SQL.