【问题标题】:Find all direct subordinates of a particular employee in SQL在 SQL 中查找特定员工的所有直接下属
【发布时间】:2020-10-12 21:13:13
【问题描述】:

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

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);

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。 文本表形式的样本数据比图像更受欢迎。一个 db/sql 小提琴很有帮助。还要定义“直接下属”的含义。
  • @GordonLinoff 我已经添加了 INSERTS 来生成数据库。

标签: sql


【解决方案1】:

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

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

? 是老板名字的占位符。

【讨论】:

  • @student 。 . .你的评论完全没有帮助。你是什​​么意思“不起作用”?它应该完全按照预期进行,并且应该回答您的问题。
  • 输出为空。
  • 好的,如何迭代所有老板(员工)?
  • @student 。 . .这不是你在这里问的问题。
猜你喜欢
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
相关资源
最近更新 更多