Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona le righe in cui pivot ha TUTTI gli ID

Potresti aggiungere un having clausola alla tua query per assicurarti che ogni gruppo di c.id abbia tutti e quattro i cp.product_id:

SELECT
    c.id as company_id
FROM
    `companies` as c
    LEFT JOIN `company_products` cp ON cp.company_id = c.id
WHERE
    c.id IN (8, 13)
    AND cp.product_id IN (1,2,4,8)
GROUP BY
    c.id
HAVING COUNT(DISTINCT cp.product_id) = 4;    

Campione SQL Fiddle

Se hai bisogno anche dei dettagli del prodotto, puoi utilizzare la query sopra come tabella derivata e unirla alla tabella del prodotto.