0

我有一张代表员工的表格。我有第二个表代表各种员工资料,例如员工、团队负责人、经理、行政人员等。我有第三个表格,将员工映射到多对多关系中的个人资料,即员工可以同时属于“员工的个人资料和“经理”的个人资料。

我如何才能获得在我的第一列中显示每个员工的回报,然后在随后的列中表示每个配置文件,并以是 - 否(或类似)表示该员工是否属于每个特定配置文件?

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 回答