Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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_Oracle - Fatal编程技术网

Sql 如何从三个表中获取不同的数据?

Sql 如何从三个表中获取不同的数据?,sql,oracle,Sql,Oracle,查询: 表名称:te select te.empno, te.ename, te.mgr from test te where te.deptno=10 and not exists (select 1 from t1 te1 where te1.deptno=te.deptno and te1.empno=te.empno) and not exists (select 1 from t te2 where te2.mgr=te.mgr); 表名称:t1 EMPNO

查询:

表名称:te

select te.empno, te.ename, te.mgr
from test te
where te.deptno=10 and
      not exists (select 1 from t1 te1 where te1.deptno=te.deptno and te1.empno=te.empno) and
      not exists (select 1 from t te2 where te2.mgr=te.mgr);
表名称:t1

EMPNO   ENAME   JOB      MGR    HIREDATE    SAL COMM    DEPTNO
7839    KING    PRESIDENT   -   17-Nov-81   5000    -   10
7782    CLARK   MANAGER  7839   9-Jun-81    2450    -   10
7934    MILLER  CLERK    7782   23-Jan-82   1300    -   10
123    Ranga    -        7566   -              -    -   10
124    srinu    -         123   -             - -       10
表名称:t

EMPNO   DEPTNO
7782    10
7934    10
7839    10
这里有三张不同的桌子。我需要三个不同数据的表。有没有可能得到不同的请帮助

所需输出:

MGR     NAME
7566    aaa

我想你只需要两张桌子。 如果我理解正确的话,你只需要两张桌子

EMPNO   ENAME   JOB      MGR    HIREDATE    SAL COMM    DEPTNO
123     Ranga    -        7566   -              -    -   10
124     srinu    -         123   -             - -       10
或者,如果您需要使用3个表:

select te.EMPNO, te.ENAME, te.JOB, t.MGR,t.NAME as "MGRNAME",te.HIREDATE, te.SAL, te.COMM, te.DEPNO
from te
join t on t.MGR=te.MGR

这是针对上述问题的解决方案

我需要三个表不同的数据这是什么意思?查询-尤其是mgr不存在的查询和所需的输出似乎相互矛盾。@minigeek抱歉打印错误。我需要te表中基于三个表的不同列的数据,但我将尝试上面的查询,它将像这样生成EMPNO ENAME MGR 124 srinu 123,但我需要上面提到的输出。谢谢,请向我们展示您的输出和您想要的输出。这样人们就可以很容易地理解您的错误所在。请找一个懂英语的人帮助你制定你的问题。经过这么多的交流,我们仍然不清楚要求是什么,在这种情况下,几乎可以肯定这是语言障碍。非常感谢。很抱歉给您带来不便,我需要输入所需的不匹配行。请对此提供帮助?thanks@swamy您需要包括te表中的数据,但不包括其他表中的数据吗?就这样?从IF_LSP_PANUM_MAP ilp中选择pa_num、partner_id、product_line,其中icp.country_code=i_workflow_键且不存在从sq_partner中选择1,sq_lsp lsp其中partner.partner_id=lsp.company_id和partner.country_code=ilp.country_code和partner.partner_id=ilp.partner_id和partner.active='Y'且不存在从sq_product_line pl中选择1,其中pl.product_line_id=ilp.product_line;这是我的requirement@swamy此查询没有上述表。那是什么?你需要提供一个明确的目标。我发布的查询适用于您问题中的示例。我建议如下。运行我发布的查询并查看结果。或者尝试该查询:选择te.EMPNO、te.ENAME、te.JOB、t.MGR、t.NAME作为MGRNAME、te.HIREDATE、te.SAL、te.COMM、te.DEPNO从teste te left join t on t.MGR=te.MGR,其中t.MGR为null我得到了解决方案,请检查它是否正确,并让我知道。如果解决了,您可以删除第二个select,删除并存在。。。条件,添加一个distinct,以更少的代码获得相同的结果
select te.EMPNO, te.ENAME, te.JOB, t.MGR,t.NAME as "MGRNAME",te.HIREDATE, te.SAL, te.COMM, te.DEPNO
from te
join t1 on t1.EMPNO=te.EMPNO and t1.DEPNO=te.DEPTNO
join t on t.MGR=te.MGR
select te.empno, te.ename, te.mgr from test te
WHERE te.deptno=10
AND not exists(select 1 from t1 te1 where te1.deptno=te.deptno and te1.empno=te.empno)
AND  exists(select 1 from t te2 where te2.mgr=te.mgr)
union
select te.empno, te.ename, te.mgr from test te
WHERE te.deptno=10
AND  not exists(select 1 from t1 te1 where te1.deptno=te.deptno and te1.empno=te.empno)
AND not  exists(select 1 from t te2 where te2.mgr=te.mgr)