我得到的是
表:
employee {id, name, phone, dep_link[fk]}
department {id, name}
groups {id, name}
employees_groups {id, emp_id_link[fk] ,group_id_link[fk]}
departments_groups {id, dep_id_link[fk], group_id_link[fk]}
逻辑:
- 每个员工可以在一个部门,一个部门可以有多个员工。(一对多是选择,就像我对
{dep_link[fk]}
所做的那样) - 每个员工可以属于多个组,一个组可以有多个员工。
- 一个部门可以隶属多个组,一个组可以隶属多个部门。
我对表和关系的处理是正确的吗?我有两个部门(信息技术部、档案部),它们是集团的一部分(全部)。将关系添加到departments_groups表后,如何检索这些部门的员工?
例如,我有两个部门(IT,档案),他们是一部分在departments_groups中添加关系后,group (All)表如何检索这些部门的员工?
SELECT * FROM employee WHERE employee.dep_link
IN (SELECT dep_id_link FROM departments_group INNER JOIN groups
ON groups.id = group_id_link AND groups.name = 'All')
我想这就是你想要的:
select e.id
,e.name
,e.phone
from employee e
,group g
,employee_groups eg
where e.id = eg.emp_id_link
and g.id = eg.group_id_link
and g.name = "all"
希望有帮助。:)