3 solutions (NOT EXISTS + EXCEPT, HAVING + COUNT()) work for all DBMS
Code
# Code
```
-- First solution: NOT EXISTS + EXCEPT

select distinct customer_id from Customer C1 where not exists(
    select product_key from Product
    except 
    select product_key from Customer C2 where C2.customer_id = C1.customer_id
)

-- Second solution: NOT EXISTS (twice)

select distinct customer_id from Customer C1 where not exists(
    select 1 from Product P where not exists (
        select 1 from Customer C2 where C2.customer_id = C1.customer_id and C2.product_key = P.product_key)
) 

-- Third solution: HAVING + COUNT()
select customer_id from Customer group by customer_id 
having count(distinct product_key) = (select count(*) from Product)

```
['MySQL', 'Oracle', 'MS SQL Server']