我的数据模型:


配置文件有很多项目(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子句对于正确性不是必需的,但会增加性能(特别是如果索引可用于查找)。

10-06 10:01