-1

私はSQLにまったく慣れていません。次のテーブルを作成しました。

Employee
- employee_id
- employee_name

Projects
- project_id
- project_name

Roles
- role_id
- role_name

Employee_project_role
- employee_id
- project_id
- role_id

クエリを作成する必要があります: さまざまな役割の数を含む従業員をリストし、役割もリストします。つまり、従業員 (emp1) が 1 つのプロジェクトでチーム リーダー (TL) として働き、他の 2 つの異なるプロジェクトでテスター (TEST) として働いている場合、出力は次のようになります。

employee_name   count   Role
---------------------------
  emp1           1      TL
  emp1           2      TEST
4

3 に答える 3

3

試す、

SELECT COUNT(my_table.*), my_table.employee_name, my_table.role 
FROM 
(SELECT r.role_name as role, e.employee_name as employee_name 
FROM employee e 
JOIN employee_project_role epr ON epr.employee_id = e.employee_id 
JOIN roles r ON r.role_id = epr.role_id) my_table
GROUP BY my_table.employee_name, my_table.role;
于 2012-10-18T12:52:27.793 に答える
1

グループ化を使用して、プロジェクトの合計を合計します。

SELECT emp.employee_name,count(proj.project_name),role.role_name
FROM employee emp , project proj , role role , employee_project_role main
WHERE emp.employee_id = main.employee_id
AND proj.project_id = main.project_id
AND role.role_id = main.role_id
group by emp.employee_name , role.role_name

ここで確認してくださいSqlFiddle

于 2012-10-18T12:57:54.343 に答える
1
select
    E.employee_name,
    count(*) as cnt,
    R.role_name
from Employee_project_role as EPR
    left outer join Employee as E on E.employee_id = EPR.employee_id
    left outer join Roles as R on R.role_id = EPR.role_id
group by E.employee_name, R.role_name
于 2012-10-18T12:33:44.190 に答える