我有 3 张桌子:
Employee: contain employee_id, name
Project: contain project_id, name
Project_assignment: contain id_assign, employee_id, project_id, startdate, enddate
我想显示我加入的列表项目信息:name_project(我加入),加入项目的人数和开始日期(我加入项目的日期)
有没有办法做到这一点?谢谢
如果我正确理解您的问题,您需要使用GROUP BY
:
SELECT P.Project_Id, P.Name as ProjectName, PA.StartDate, COUNT(E.Employee_Id) as EmployeeCount
FROM Project P
JOIN Project_Assignment PA ON P.Project_Id = PA.Project_Id
JOIN Employee E ON PA.Employee_Id = E.Employee_Id
GROUP BY P.Project_Id, P.Name, PA.StartDate
请注意,假设员工在不同的日子加入该项目,这不会为您提供唯一的记录。如果是这种情况,您希望显示哪个开始日期?
- 编辑
这应该会返回您所在的项目(假设您的 id 是 123),以及项目 id、项目名称、开始日期和员工人数:
SELECT P.Project_Id, P.Name as ProjectName, PA.StartDate, E.EmpCount
FROM Project P
JOIN Project_Assignment PA ON P.Project_Id = PA.Project_Id AND PA.Employee_Id = 123
JOIN (
SELECT Project_Id, Count(Employee_Id) EmpCount
FROM Project_Assigment
GROUP BY project_id
)
E ON P.Project_Id = E.Project_Id
祝你好运。