Sql 如何从三个表中获取不同的数据?
查询: 表名称:teSql 如何从三个表中获取不同的数据?,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
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)