0

私が得たものは

テーブル:

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]}

論理:

  1. すべての従業員を 1 つの部門に所属させることができ、その部門には多数の従業員を所属させることができます。(私が で行ったように、1 対多が選択されます{dep_link[fk]})
  2. 各従業員は多くのグループに属することができ、グループには多くの従業員を含めることができます。
  3. 各部門は多くのグループに属することができ、グループは多くの部門を持つことができます。

テーブルとリレーションで行ったことは正しいですか? グループ (すべて) の一部である 2 つの部門 (IT、アーカイブ) があります。departments_groups テーブルにリレーションを追加した後、これらの部門の従業員を取得するにはどうすればよいですか?

4

2 に答える 2

0

たとえば、departments_groups テーブルにリレーションを追加した後、グループ (All) の一部である 2 つの部門 (IT、アーカイブ) を取得した場合、これらの部門の従業員を取得するにはどうすればよいですか?

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')
于 2013-05-19T14:56:10.820 に答える
0

これはあなたが探しているものだと思います:

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"

それが役に立てば幸い。:)

于 2013-05-20T15:54:09.033 に答える