Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie Zeilen aus, in denen Pivot ALLE IDs hat

Sie könnten ein having hinzufügen -Klausel zu Ihrer Abfrage, um sicherzustellen, dass jede Gruppe von c.id alle vier cp.product_id:

enthält
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;    

Beispiel-SQL-Fiddle

Wenn Sie auch die Produktdetails benötigen, können Sie die obige Abfrage als abgeleitete Tabelle verwenden und mit der Produkttabelle verknüpfen.