【问题标题】:Joining job column and Dname column from emp table and dept table [closed]从emp表和dept表中加入job列和Dname列[关闭]
【发布时间】:2013-01-22 01:14:18
【问题描述】:
SELECT ENAME, EMP.JOB,DEPT.DNAME
FROM EMP, DEPT
WHERE EMP.JOB=DEPT.DNAME;

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

【问题讨论】:

  • 有关您的表结构的一些信息? EMP.JOB 是否应该等于 DEPT>DNAME?
  • 是的!我认为在 DEPT>DNAME 中,您将 > 放错了位置“。” ....无论如何我明白了非常感谢你

标签: sql oracle10g


【解决方案1】:

假设EMP.JOB=DEPT.DNAME 是正确的(我无法想象),您的查询实际上是正确的,您可以像这样加入:

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

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

EMP.JOB 可能是 developerprogrammer 的想法将匹配 DEPT.DNAME 在这种情况下将是 开发部门 em> 例如有点奇怪,我想你再看看你的表是如何相互连接的。

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

【讨论】:

  • 非常感谢@menomore .... 我接受这是一个蹩脚的问题
【解决方案2】:

我不确定你想要什么 - 工作永远不会等于部门名称...这是正确的 join -copy/paste 运行并查看结果:

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 永远不会像原始问题/查询中那样正确。

【讨论】:

  • 感谢您的帮助我知道您给出的答案,但我问的问题是正确的。例如:在 Emp 中,我有名为 Salesman 的工作在 Dept 表中,我在 Dname 列中有 Salesman。所以我想加入他们......无论如何我明白了谢谢你,先生!
  • @Art 您的回答假设两个表上都有 deptno 列,这绝对合乎逻辑,但这并不能成为事实,在我看来,这仍然没有理由拒绝答案,因为这个想法仍然存在正确的。无论如何,因为我们在这个网站上有太多的反对者,所以我会给它 +1 来补偿反对者。
  • @MeNoMore - 你是对的。我写道,我假设用户谈论的是 scott.emp 表而不是他的表。对此投反对票的人可能会读懂别人的想法,而对 SQL 一无所知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2018-07-15
  • 2015-10-07
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多