【问题标题】:SQL joins from same table column来自同一表列的 SQL 连接
【发布时间】:2018-12-03 06:58:32
【问题描述】:

有两张桌子

  • 员工:employee_id、employee_name、manager_id、department_id
  • 部门:department_id,manager_id

我需要显示员工 ID、员工姓名、经理姓名和经理 ID,但我不知道如何显示经理姓名。这是我所拥有的,尽管它非常错误并且没有显示真实的经理姓名

SELECT e.last_name "Employee", e.employee_id "Emp#", e.last_name "Manager",      
       d.manager_id "Mgr#"
FROM employees e, 
     departments d;

【问题讨论】:

  • 更新您的问题添加适当的数据样本..和预期的结果
  • Google 'SQL joins' 并按照简单的示例为您轻松解决此问题。
  • 从不FROM 子句中使用逗号。 始终使用正确、明确、标准JOIN语法。

标签: sql join


【解决方案1】:

使用关键字 Join 解决 - 只需要使用一个表两次

SELECT e.last_name "Employee", e.employee_id "Emp#", e2.last_name "Manager", 
       e.manager_id "Mgr#"
       FROM employees e
       JOIN employees e2 ON e2.employee_id = e.manager_id;

或不使用关键字连接/使用简单连接

SELECT e.last_name "Employee", e.employee_id "Emp#", e2.last_name "Manager", 
   e.manager_id "Mgr#"
   FROM employees e, employees e2
   WHERE e2.employee_id = e.manager_id

【讨论】:

  • 很高兴自己解决。如果您需要另一个表departments 中的额外列,例如dept_name,您也可以使用left join 添加该表。
【解决方案2】:

您可以在 manager_id 上进行内部联接,因此只保留匹配的行

 SELECT last_name as "Employee", employee_id as "Emp#", last_name as "Manager", 
   manager_id as "Mgr#"
   FROM employees as e1
   INNER JOIN departments as d2 
   ON e1.manager_id = d2.manager_id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多