首页 > 解决方案 > 在 SQL 中查找特定员工的所有直接下属

问题描述

我有一张员工及其老板的表格:

CREATE TABLE IF NOT EXISTS Personnel (

emp CHAR(10) NOT NULL PRIMARY KEY,

boss CHAR(10) DEFAULT NULL REFERENCES Personnel(emp),

salary DECIMAL(6,2) NOT NULL DEFAULT 100.00);

在此处输入图像描述 我需要找到特定员工的所有直接下属。我的代码只显示每个老板的一名员工:

SELECT (SELECT E2.emp FROM Personnel E2 WHERE E1.emp = E2.boss), E1.emp FROM Personnel E1;

问题:就是把每个老板的所有员工都打印成一行
下面是构建数据库的代码:

INSERT INTO Personnel VALUES('Ivanov', Null, 1000);

INSERT INTO Personnel VALUES('Petrov', 'Ivanov', 900);

INSERT INTO Personnel VALUES('Sidorov', 'Ivanov', 850);

INSERT INTO Personnel VALUES('Smirnov', 'Petrov', 840);

INSERT INTO Personnel VALUES('Fedorov', 'Petrov', 800);

INSERT INTO Personnel VALUES('Andreev', 'Sidorov', 700);

INSERT INTO Personnel VALUES('Alekseev', 'Sidorov', 700);

INSERT INTO Personnel VALUES('Borisov', 'Sidorov', 740);

标签: sql

解决方案


“直接下属”是指上司就是这个人。因此,一个简单的where子句就足够了:

select p.*
from personnel p
where p.boss = ?;

?是老板名字的占位符。


推荐阅读