0

従業員を表すテーブルがあります。従業員、チーム リーダー、マネージャー、エグゼクティブなど、さまざまな従業員のプロファイルを表す 2 番目のテーブルがあります。3 番目のテーブルは、従業員を多対多の関係でプロファイルにマップします。つまり、従業員は両方に属することができます。従業員のプロファイルと「マネージャー」のプロファイル。

最初の列にすべての従業員を表示し、その後の列に各プロファイルを表し、その従業員が特定の各プロファイルに属しているかどうかを示すはい/いいえ (または同様の) を示すリターンを取得するにはどうすればよいですか?

4

2 に答える 2

1

結合と集計を使用してこれを行うことができます。

select e.employee_id,
       max(case when p.profile_name = 'Employee' then 1 else 0 end) as Employee,
       max(case when p.profile_name = 'Manager' then 1 else 0 end) as Manager,
       . . . 
from employees e left outer join
     employee_profile ep
     e.employee_id = ep.employee_id left outer join
     profile p
     on ep.profile_id = p.profile_id
group by e.employee_id;

データ構造自体はかなり合理的なようです。

于 2013-07-19T02:37:39.117 に答える
0

あなたが持っている多対多を取り除くために再設計する価値があると思います。

一致する主キー/外部キーがある場合は、次のことができます

Select * from Table1, Table2 Where Table1ID = Table2ID
于 2013-07-19T02:12:17.280 に答える