从emp表和dept表连接作业列和Dname列

时间:2013-02-06 18:08:29

标签: sql oracle10g

SELECT ENAME, EMP.JOB,DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.JOB=DEPT.DNAME;

这将输出为“未选择行”。

2 个答案:

答案 0 :(得分:1)

假设EMP.JOB=DEPT.DNAME是正确的(某些我无法想象的),您的查询实际上是正确的,您可以加入以下内容:

SELECT ENAME, EMP.JOB,DEPT.DNAME
FROM EMP inner join DEPT
ON EMP.JOB=DEPT.DNAME;

但是这不会给你的查询提供其他结果,我想问题是你的混乱列,通常引用是通过id列完成的。

EMP.JOB可能开发人员程序员的想法会匹配DEPT.DNAME,在这种情况下会是开发部门例如某种程度上很奇怪,我想你再看一下你的表是如何相互连接的。

从您的数据库生成可视化图表可能会有所帮助,请参阅此主题以获取更多信息:Tools to generate a database diagram/ER diagram from existing Oracle database?

答案 1 :(得分:-1)

我不确定你想要什么 - 这个工作永远不会等于dept名称...这是正确的连接 - 复制/粘贴运行并看到结果:

SELECT d.deptno, ENAME, JOB, DNAME 
  FROM scott.EMP e, scott.DEPT d
 WHERE e.deptno = d.deptno
ORDER BY d.deptno
/

仅供参考:EMP.JOB = DEPT.DNAME永远不会像orig问题/查询中那样正确。