当前位置: 首页 > 知识库问答 >
问题:

返回员工的姓及其经理的姓

施昊然
2023-03-14

我试图用SQL编写一个查询,从同一个“employee”表中返回员工的姓和经理的姓。每个员工都有一个employeeid和一个“reportsto”列,其中包含其经理的employeeid。

这是我目前为止返回第一部分的内容(员工的姓和报告对象的id)

SELECT employee.employeeid, employee.firstname, employee.lastname, employee.reportsto
FROM employee
WHERE employee.reportsto IS NOT NULL;

这个返回

 employeeid | firstname | lastname | reportsto
------------+-----------+----------+-----------
          2 | Nancy     | Edwards  |         1
          3 | Jane      | Peacock  |         2
          4 | Margaret  | Park     |         2
          5 | Steve     | Johnson  |         2
          6 | Michael   | Mitchell |         1
          7 | Robert    | King     |         6
          8 | Laura     | Callahan |         6

我不知道如何将“reports”取下来,抓取它对应的employeeid,然后添加经理员工的姓,并将其添加到同一个记录中。

所以表应该是“employeeid,firstname,lastname,managerFirstName,managerLastName”

任何帮助都将不胜感激。

共有1个答案

梁烨烨
2023-03-14

进行自连接以获取管理器名称。

SELECT e.employeeid, e.firstname, e.lastname,
       m.firstname managerFirstName, m.lastname managerLastName
FROM employee e
JOIN employee m ON e.reportsto = m.employeeid 
WHERE e.reportsto IS NOT NULL;
 类似资料:
  • 我们有一个emp表,其中包含empno、ename、job、mgr、hiredate、sal、comm、deptno列 我试过了 我的输出是每个值为1的经理的姓名我们如何输出员工最多的经理的姓名?

  • 我试图选择一个拥有最年长员工的经理的名字和姓氏,但是我遇到了一些问题,因为每当我运行这个: 因为where子句设置为查找所有员工,所以它返回所有员工,如果我将其更改为manager,则返回所有经理。我理解为什么会这样,但我真的不知道如何解决我的问题。 我希望结果集返回经理的名字和姓氏以及他们最年长的员工的日期。 我觉得这与我的表是如何设置的无关,因为在我的情况下我无法更改它们,更重要的是我如何编写

  • 问题内容: 您好,我有一个员工表,其中包含以下列 我正在尝试创建一个将列出的视图 (通过交叉连接Employee表)。我尝试了外部联接,内部联接等,但无法正确完成。 任何帮助都将受到高度赞赏。 问题答案: 编辑 :如果emp_mgr_id为null,则左联接将起作用。

  • 问题内容: 我有一个元组,有100个姓氏。我如何在sqlite3中执行以下操作: 这样我就可以返回中包含的姓氏的所有记录。 问题答案: 问题 :返回所有记录中包含的姓氏 核心是创建一个查询,该查询具有与序列中一样多的绑定。 在需要排除最后一个逗号。 SQLite理解的SQL-子句 bindings = ‘?,’*len(surnames) QUERY = “select firstname, su

  • 问题内容: 查询以查找负责最大员工人数的经理的姓名? 补充: 这是唯一的表。是自我参照。DB是mysql。递归查询也可以。 问题答案: 我不清楚您想要什么,所以如果这不是您想要的,请澄清您的问题。 如果存在平局,此查询仅返回经理之一: 查询结果: 这是一个查询,该查询在出现并列的情况下以并列的最大数量获取所有经理: 第二个查询的结果: 这是我的测试数据:

  • 我有一个表员工与字段部门,员工和工资。我想要一个查询,以列出部门最高工资和该工资的员工姓名。 我知道这很简单。我在谷歌上搜索,但找到了这样的答案,只列出了部门和工资