Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez les lignes où le pivot a TOUS les identifiants

Vous pouvez ajouter un having clause à votre requête pour vous assurer que chaque groupe de c.id a les quatre 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;    

Exemple SQL Fiddle

Si vous avez également besoin des détails du produit, vous pouvez utiliser la requête ci-dessus comme table dérivée et la joindre à la table des produits.