查询员工姓氏、员编号 及他们的经理的姓氏、员工编号 select first_name,employee_id from employees s inner join employees e on s.manger_id=e.employee_id
时间: 2024-02-13 19:00:29 浏览: 20
您的这条 SQL 查询语句是正确的,可以查询出员工的姓名和编号,以及他们的经理的姓名和编号。
不过,您的查询语句中有一个拼写错误,应该是 "manager_id" 而不是 "manger_id"。另外,您的查询语句中缺少了经理的姓名的查询字段,您可以将经理的姓名添加到 SELECT 语句中。
因此,正确的查询语句应该是:
```
SELECT s.first_name AS employee_name, s.employee_id AS employee_id, e.first_name AS manager_name, e.employee_id AS manager_id
FROM employees s
INNER JOIN employees e
ON s.manager_id = e.employee_id
WHERE s.manager_id IS NOT NULL;
```
希望能对您有所帮助!
相关问题
2、查询1994年聘用的每位员工的姓氏和聘用日期 select first_name,year(hire_date) from employees s where (select year(a.hire_date)as 'du' from employees a);
这个 SQL 查询语句是有错误的,它的子查询没有限制条件,也没有与外层查询进行关联,无法正确地获取每位员工的姓氏和聘用日期。以下是一个可以正常运行的 SQL 查询语句,可以查询1994年聘用的每位员工的姓氏和聘用日期:
```
SELECT first_name, hire_date FROM employees WHERE YEAR(hire_date) = 1994;
```
这个查询语句使用了 WHERE 子句来限制查询条件,只查询了聘用日期为1994年的员工,同时选择了每位员工的姓氏和聘用日期。
DECLARE CURSOR c_emp IS SELECT a.first_name,a.last_name, a.employee_id,a.department_id, b.first_name mfirst_name,b.last_name mlast_name FROM employees a inner join employees b on a.employee_id=b.manager_id; v_emp c_emp%ROWTYPE; BEGIN FOR v_emp IN c_emp LOOP DBMS_OUTPUT.PUT_LINE(v_emp.first_name||' '|| v_emp.last_name||' emp_id:'||v_emp.employee_id||' '|| v_emp.mfirst_name||' '||v_emp.mlast_name||' dep_id:'|| v_emp.department_id); END LOOP; END;
这是一段 PL/SQL 代码,它使用了一个带有 JOIN 操作的游标(CURSOR)来返回 employees 表中每个员工及其经理的信息。该游标查询了 employees 表两次,一次作为主表,另一次作为从表,并使用 INNER JOIN 将它们连接起来。然后,FOR 循环使用游标中的数据来逐行输出每个员工的姓名、ID、部门ID、经理的姓名和经理的姓氏。这些数据使用 DBMS_OUTPUT.PUT_LINE 函数输出到控制台。