Bạn có thể thêm một having
cho truy vấn của bạn để đảm bảo rằng mọi nhóm c.id đều có tất cả bốn 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;
Nếu bạn cũng cần thông tin chi tiết về sản phẩm, bạn có thể sử dụng truy vấn trên làm bảng dẫn xuất và kết hợp nó với bảng sản phẩm.