我的数据模型:
配置文件有很多项目(Project.ProfileID)
项目很多专业(Projects_Specialities表[ProjectID / SpecialityID])
项目多行业(Projects_Industries表[ProjectID / IndustryID])
当获得一个IndustryID和SpecialityID时,我需要获取所有具有至少一个具有该IndustryID的项目和至少一个具有该SpecialityID的项目的概要文件。
我已经尝试过数百万种可以在此处发布的内容,但我认为我会先看看是否有明显的答案。
最佳答案
您可以按配置文件对联接的表进行分组,并过滤感兴趣的组:
SELECT Project.ProfileID
FROM Project
JOIN Projects_Specialities USING (ProjectID)
JOIN Projects_Industries USING (ProjectID)
WHERE Projects_Specialities.SpecialityID = ?
AND Projects_Industries.IndustryID = ?
GROUP BY Project.ProfileID
HAVING SUM(Projects_Specialities.SpecialityID = ?)
AND SUM(Projects_Industries.IndustryID = ?)
WHERE
子句对于正确性不是必需的,但会增加性能(特别是如果索引可用于查找)。