Byli jste blízko
SELECT order_id
FROM orders
WHERE product_id in (222,555)
GROUP BY order_id
HAVING COUNT(DISTINCT product_id) = 2
Pokud jde o vaši otázku „ze zvědavosti“ v relační algebře, lze toho dosáhnout jednoduše pomocí divize . AFAIK žádný RDBMS neimplementoval žádné rozšíření, které by to v SQL zjednodušilo.