我有一张公司表,我有一张能力表和一张表; companies_competencies
我试图让所有公司与某个数据集中的所有能力相关联.
因此,例如,我需要让所有拥有1,2和3能力的公司.
我已经开始使用此查询:
SELECT companies.id, companies.name FROM companies, companies_competencies
WHERE companies.id = companies_competencies.companies_id
AND companies_competencies.competency_id IN(1,2,3)
GROUP BY companies.id
Run Code Online (Sandbox Code Playgroud)
这给了我所有拥有一项或多项能力的公司,但我正在努力让公司专门拥有所有这些公司.
这将为您提供具有所有必要能力的公司ID列表:
select companies_id
from companies_competencies
where competency_id in (1, 2, 3)
group by companies_id
having count(distinct competency_id) = 3 --the # of unique competency IDs
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
select *
from companies
where id in (
select companies_id
from companies_competencies
where competency_id in (1, 2, 3)
group by companies_id
having count(distinct competency_id) = 3
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |