【问题标题】:SQL: creating a new table that tells the user which manager is for each employeeSQL:创建一个新表,告诉用户每个员工的经理
【发布时间】:2015-11-20 21:18:23
【问题描述】:

所以我需要制作一个表格,列出每个员工的经理。我知道我需要将经理 ID 与员工 ID 相关联,但我不知道该怎么做

create table employee
(EmpID int, 
name varchar (50),
title varchar (50),
managerID int, 
salary int
);

执行命令时

select * from employee;

应该给

EmpID   name               title        managerID
 ----------------------------------------------
'101', 'Robert Jones',   'Sales Person', '102'
'102', 'Liz Farnandezs', 'Sales Manager','106'
'103', 'Mathew Richards','Sales Person', '102'
'104', 'Ethan Lubatkin', 'Sales Person', '105'
'105', 'Stuart Little',  'Store Manager', NULL
'106','Samantha Porter', 'Manager',       NULL

我还是 SQL 新手,所以任何可以帮助我解决这个问题的东西都会很棒。

我需要一个看起来像这样的结果

EmpID   name               manager        managerID
 ----------------------------------------------
'101', 'Robert Jones',   'Liz Farnandezs', '102'
'102', 'Liz Farnandezs', 'Samantha Porter','106'
'103', 'Mathew Richards','Liz Farnandezs', '102'
'104', 'Ethan Lubatkin', 'Stuart Little',  '105'
'105', 'Stuart Little',   NULL,            NULL
'106','Samantha Porter',  NULL,            NULL

【问题讨论】:

    标签: mysql sql database mysql-workbench


    【解决方案1】:

    您不需要额外的表格,表格中包含所有需要的信息。

    您只需要使用连接(同一张表的两个实例,一个用于员工,一个用于经理)即可获取经理的详细信息:

    SELECT emps.empID, emps.name, managers.name as manager, 
    managers.empID as managerID
    FROM employee as emps LEFT JOIN employee as managers 
    ON emps.managerID = managers.empID
    

    【讨论】:

      【解决方案2】:

      你只需要这样的东西,你LEFT JOIN同一张桌子,以便让员工和他的直接经理在同一行:

      SELECT
          e1.empID
          , e1.name
          , e2.name as Manager
          , e2.empID as ManagerID
      FROM employee e1
          LEFT JOIN employee e2 ON e1.managerID = e2.empID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-25
        • 2017-03-27
        • 1970-01-01
        • 2018-09-23
        相关资源
        最近更新 更多