SQL查询 - 如何在管理公司的公司中显示部门?

时间:2016-10-10 23:52:56

标签: sql sql-server

我遇到了这个问题而且不知道该怎么做。我有以下问题。 显示公司中所有部门的名称及其经理的姓名。您的查询必须显示公司中的所有部门,即使它没有经理。

我的问题是,当我运行查询只给我部门名称时,我得到了27个结果。但是对于经理查询,只有18个结果。

我不知道该怎么做。我以前得到的查询是,部门名称:

--select department_name from departments;
Administration
Marketing
Purchasing
Human Resources
Shipping
IT
Public Relations
Sales
Executive
Finance
Accounting
Treasury
Corporate Tax
Control And Credit
Shareholder Services
Benefits
Manufacturing
Construction
Contracting
Operations
IT Support
NOC
IT Helpdesk
Government Sales
Retail Sales
Recruiting
Payroll

第二部分:

select first_name, last_name, department_name from employees e inner join departments d on
d.department_id=e.department_id where (employee_id in (select manager_id from employees));

first_name  last_name   department_name
Steven  King    Executive
Neena   Kochhar Executive
Lex De Haan Executive
Alexander   Hunold  IT
Nancy   Greenberg   Finance
Den Raphaely    Purchasing
Matthew Weiss   Shipping
Adam    Fripp   Shipping
Payam   Kaufling    Shipping
Shanta  Vollman Shipping
Kevin   Mourgos Shipping
John    Russell Sales
Karen   Partners    Sales
Alberto Errazuriz   Sales
Gerald  Cambrault   Sales
Eleni   Zlotkey Sales
Michael Hartstein   Marketing
Shelley Higgins Accounting

第二部分仅向经理人返回部门。

2 个答案:

答案 0 :(得分:0)

select e.first_name, e.last_name, d.department_name
from employee e right join department d 
    on e.department_id = d.department_id
where e.employee_id in (select manager_id from employee)
    or e.manager_id is null;

答案 1 :(得分:0)

对于那些感兴趣的人:

选择d.department_name为'Department Name',e.first_name为'Manager First Name',e.last_name为'Manager Last Name'来自部门d 左外连接员工e在d.department_id = e.department_id和(employee_id in(select manager_id from employees))order by department_name;

得到我教授的答案