- 階層構造のデータモデルの作成: 従業員テーブルを作成し、各従業員の情報を格納します。テーブルには、従業員ID、名前、役職、上司のIDなどの列が含まれます。
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(100),
manager_id INT
);
-
従業員の階層関係を表現する方法: 上司のIDを使用して従業員の階層関係を表現します。上司のIDがNULLの場合、その従業員が最上位の管理者であることを示します。
-
新しい従業員の追加: 新しい従業員を追加する場合は、適切な上司のIDを指定します。
INSERT INTO employees (employee_id, name, position, manager_id)
VALUES (1, 'John Doe', 'Manager', NULL);
- 従業員の階層構造のクエリ: 階層構造をクエリするために、再帰的なクエリを使用します。下記の例では、従業員ID 1 の直下の従業員を取得しています。
WITH RECURSIVE employee_hierarchy AS (
SELECT * FROM employees WHERE employee_id = 1
UNION ALL
SELECT e.* FROM employees e
INNER JOIN employee_hierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM employee_hierarchy;
- 特定の従業員の部下を取得するクエリ: 特定の従業員の部下を取得する場合は、その従業員のIDを使用してクエリを実行します。
WITH RECURSIVE employee_subordinates AS (
SELECT * FROM employees WHERE employee_id = 1
UNION ALL
SELECT e.* FROM employees e
INNER JOIN employee_subordinates es ON e.manager_id = es.employee_id
)
SELECT * FROM employee_subordinates;
- 従業員の昇進や移動: 従業員の昇進や移動の場合は、従業員の情報を更新します。
UPDATE employees
SET position = 'Senior Manager'
WHERE employee_id = 1;
上記の方法とコード例を使用することで、従業員の階層構造を効果的に管理できます。これにより、従業員の関係や組織の構造を把握しやすくなります。