案例: 我想已经COMPANY_ID 8和13,但所有的公司,只有当他们都product_ids(1,2,4,8)。选择行,其中枢轴具有所有的ID
问题: company_id 13没有product_id 4和8,但仍显示在查询结果中,如下所示。似乎cp.product_id IN(1,2,4,8)返回公司,如果它有这些值之一,但我需要他们在透视表company_products中具有所有这些值。
SELECT
c.id as company_id,
cp.product_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
我的猜测是我应该使用IN以外的东西,但是我的研究并没有让我找到正确的解决方案。感谢您的帮助。
当您说“_all所有拥有company_id 8和13_的公司”时,假设您确实是指“_company_id 8 OR 13_”是否正确?布尔值和/或在这里是重要的,'IN()'用作'OR'。我明白你的问题的部分内容,但其他WHERE条件需要澄清。如果您将输入行样本与该输入样本中的输出行一起提供,那么这将有所帮助,因此我们无需进行任何推理。 –
在我的代码中,我已经确定我想company_id 8和13.我想过滤这两家公司的条件是具有所有给定的product_id –