Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在下面的场景中获得结果_Sql_Select_Oracle10g_Nested Queries_Mssql Jdbc - Fatal编程技术网

Sql 如何在下面的场景中获得结果

Sql 如何在下面的场景中获得结果,sql,select,oracle10g,nested-queries,mssql-jdbc,Sql,Select,Oracle10g,Nested Queries,Mssql Jdbc,我有一张桌子 EMP(id int primary key, name varchar2(15), mgrID int). 现在这个表格包含了所有员工,包括公司的工人和经理。mgrID列包含他们向其报告的员工的id 我想列出不是经理的工人的姓名以及他们的经理姓名。 如何处理此类查询 我尝试了嵌套选择查询,如下所示: select name, (select name from EMP where mgerID is NULL) as Manager from EMP; 此查询会给出正确的结

我有一张桌子

EMP(id int primary key, name varchar2(15), mgrID int).
现在这个表格包含了所有员工,包括公司的工人和经理。mgrID列包含他们向其报告的员工的id

我想列出不是经理的工人的姓名以及他们的经理姓名。 如何处理此类查询

我尝试了嵌套选择查询,如下所示:

select name, (select name from EMP where mgerID is NULL) 
as Manager from EMP;

此查询会给出正确的结果吗?

您可以使用自联接:

SELECT e.name AS name, m.name AS manager_name
FROM   emp e
JOIN   emp m ON e.mgrid = m.id

您的查询应该失败,因为您的子查询是不相关的,并且如果您有多个顶级经理,则将返回多个结果

select name
     , (select name from EMP b where b.ID = a.mgerID ) as Manager 
  from EMP a;
我认为自连接是更规范的解决方案,但您应该了解相关子查询,因为它有许多应用程序