0

私は3つのテーブルを持っています:

Employee: contain employee_id, name

Project: contain project_id, name
Project_assignment: contain id_assign, employee_id, project_id, startdate, enddate

参加したプロジェクトのリストを表示したい: name_project (参加した)、プロジェクトに参加した人数、および startdate (プロジェクトに参加した日付)

とにかくそれを行うことはありますか?ありがとう

4

1 に答える 1

1

あなたの質問を正しく理解している場合は、次を使用する必要があります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、プロジェクト名、開始日、および従業員数とともに、現在のプロジェクト (ID が 123 であると仮定) が返されます。

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

幸運を。

于 2013-01-29T03:13:15.807 に答える