【问题标题】:How to join two tables first then join to another table如何先加入两个表然后加入另一个表
【发布时间】:2020-03-03 00:11:05
【问题描述】:

我有一个 DB2 数据库,我必须连接三个表。我想加入前两个表,在加入前两个表后,我想将加入的表加入另一个第三个表。我尝试使用左连接,但找不到预期的结果。我尝试了以下方法:

select AFJKAR as "ELR_Elig_Redirect_SchdID",
       AFEZAM as "Priority",
       AFTSAS as "ELC_Status",
       AFT7CE as "ELC_From_Date",
       AFT8CE as "ELC_Thru_Date",
       AFTTAS as "ELC_Redirect_Action", 
       AFJLAR as "GPI_List",
       AIZAHA as "GPI_List_ID",
       AILUIG as "GPI_Number",
       AICXHG as "GPI_From_Date",
       AICYHG as "GPI_Thru_Date",
       SUEFC4 as "GPI_ID",
      SUB4T3 as "Drug_Name"
from CLMPRDFIL.RCELCP as RCE
left join CLMPRDFIL.RCGP2P as RCG on RCE.AFJLAR = RCG.AIZAHA 
left join CLMPRDFIL.RCGPIP as RCGP on RCG.AIZAHA = RCGP.SUEFC4;

基本上,我想先加入 RCERCGP2P 表。加入后,我想通过RCGPIP加入。

【问题讨论】:

  • 您的代码应该可以工作。请提供样本数据和期望的结果。解释你的期望。
  • 没有first。Join是一个运算符,连接两个表,或者表表达式。导致另一个表表达式。
  • "我想加入前两个表..." -- 正如@wildplasser 所说,SQL 是一种声明性 语言,而不是命令性一。您指定您需要的内容,然后 SQL 引擎生成它。您可能对执行计划有一定的控制权,但最终引擎会决定如何运行查询。

标签: sql db2


【解决方案1】:

为此使用相应的优化配置文件/指南。
Optimization profiles and guidelines
如果您认为使用特定的连接顺序可以获得更好的性能,您可以在那里指定所需的连接顺序。
请注意,您应该首先尝试收集有关这些表的统计信息,以使 Db2 优化器使用正确的连接顺序。例如,尝试使用它们的连接键在前 2 个表上创建一个统计视图并收集关于它的统计信息。之后查看原始查询的访问计划以检查是否获得所需的连接顺序。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2019-05-24
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多