我想从这个表中找到员工的经理名称(表中有某些用户是经理,对于他们来说,emp_mgr将为null,因为特定经理下的员工将由经理的员工编号填充
CREATE TABLE EMP (
EMP_NUM INTEGER PRIMARY KEY,
EMP_TITLE CHAR(10),
EMP_LNAME VARCHAR(15) NOT NULL,
EMP_FNAME VARCHAR(15) NOT NULL,
EMP_INITIAL CHAR(1),
EMP_DOB DATETIME,
EMP_HIRE_DATE DATETIME,
EMP_AREACODE CHAR(3),
EMP_PHONE CHAR(8),
EMP_MGR INTEGER);
我试图寻找使用以下人员的经理,但我无法做到
select * from EMP where emp_mgr='' (I am unable to get the data) This is because Managers have no emp_mgr and it would be generally null
答案 0 :(得分:1)
您可以使用自我加入来执行此操作:
SELECT e1.emp_num, e1.emp_lname as employee_last_name, e2.emp_lname as manager_last_name
from emp e1
LEFT JOIN emp e2 ON e1.emp_mgr = e2.emp_num
当员工是经理时,e2值将为NULL
答案 1 :(得分:0)
嗯......如果你只想要一份高层管理人员名单(没有其他经理人)那么这个:
select * from EMP where emp_mgr is null;
你也可能会嵌套这样的东西:
select * from emp where emp_num in ( select emp_mgr from emp );