【问题标题】:Joining two queries连接两个查询
【发布时间】:2014-12-09 15:00:15
【问题描述】:

所有,在连接来自 DB2 中的两个 select 语句的数据方面需要帮助。

第一个查询是,

SELECT DISTINCT(EMPLOYEENAME)
FROM TABLE1 A, TABLE2 B, TABLE3 C
WHERE A.EMPLOYEEID=B.EMPLOYEEID AND B.EMPLOYEENUM=C.EMPLOYEENUM

现在,第一个查询 EMPLOYEENAME 的结果需要与第二个查询结合

SELECT * FROM 
TABLE4 D, TABLE5 E, **FIRSTQUARYRESULT**.F
AND D.EMPLOYEENAME=E.EMPLOYEENAME AND E.EMPLOYEENAME= F.EMPLOYEENAME

任何指导我们如何实现这一目标。

谢谢。

【问题讨论】:

  • 您使用 SQL Server 或 DB2 什么数据库?请适当标记您的问题。
  • 我对 DB2 不是很熟悉,但在大多数其他 SQL 中,您可以将 FIRSTQUERYRESULT 替换为子查询。 SELECT * FROM TABLE4 D, TABLE5 E, (SELECT DISTINCT(EMPLOYEENAME) FROM TABLE1 A) F WHERE D.EMPLOYEENAME = E.EMPLOYEENAME AND E.EMPLOYEENAME = F.EMPLOYEENAME;
  • 他在问您使用的是 db2 还是 Microsoft SQL Server。你用两者都标记了你的问题。
  • 抱歉,已更改.. 我正在使用 DB2
  • @gmiley - 据我所知,这是标准语法,适用于任何 RDBMS。 user3657257 - 实际上,我更担心的是您似乎在使用连接名称(您所展示的名称不是唯一的),除此之外......

标签: db2


【解决方案1】:

这应该可以解决问题:

STEP 1 : //将第一个查询的数据插入临时表 插入诱惑 选择不同的(员工姓名) 来自表 1 A、表 2 B、表 3 C 其中 A.EMPLOYEEID=B.EMPLOYEEID 和 B.EMPLOYEENUM=C.EMPLOYEENUM

第 2 步://从 D E 和 temptable F 中选择数据 选择 * 从 表 4 D,表 5 E,诱惑 F AND D.EMPLOYEENAME=E.EMPLOYEENAME AND E.EMPLOYEENAME= F.EMPLOYEENAME

【讨论】:

  • @Clockwork-Muse ...嵌套查询也不错...还有其他建议吗?
  • 最大的问题是DISTINCT(employeeName) - 如果我们更多地了解他的数据集以及他试图从中得到什么,它也许可以像常规连接一样完成,绕过嵌套的需要.请注意,一般而言,在 SQL 中一次性完成操作更可取,因为有一些优化器可用于获得最高性能的检索计划。多于 1 步执行操作会破坏优化器的计划,这在大多数情况下会导致资源使用量增加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2012-03-29
  • 2014-11-07
  • 2016-05-27
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多