我有3个表Employee
,Project
和Assignment
。一名员工可以分配到多个项目,一个项目可以有多个员工。 Assignment
表保持员工和项目之间的多对多关系。我想在sql server中的一个sql查询返回一个同时在多个项目上工作过的员工列表。基于多对多关系的sql查询
表
的Staructure表雇员
EmpId,
EmpName
表项目
ProjId,ProjName,ProjStartDate,ProjEndDate
分配
AssignmentId,ProjId,EmpId,AssStartDate,AssEndDate
感谢Bummi快速answer.Meanwhile,我也来与解决方案 – user1920851
选择ass.Eid,算上从分配的屁股(PID)NumOfProjects 内加入 (EID选择,MIN(AssStartDate)作为起始日期,MAX(AssEndDate)作为结束日期从ass.Eid = abc.Eid 分配 组通过EID)为abc 其中具有COUNT(驴abc.StartDate和abc.EndDate之间ass.AssStartDate 组由ass.Eid。 pid)> 1 – user1920851
但是你的查询很不错,不同于传统的sql思维 – user1920851