表格加入的正确顺序是什么

时间:2015-06-23 13:41:13

标签: oracle join

我有三张桌子

表1   PLANS - >有所有计划信息

列:

  • PLAN_ID
  • PLAN_NAME
  • OTHER_DETAILS

(PLAN_ID是PRIMARY KEY)

表2  注册 - >

列:

  • RUN_ID
  • PLAN_ID
  • REGISTER_DETAILS

    (RUN_ID AND PLAN_ID)是主键

    表3 选举 - > 列

  • RUN_ID

  • plan_id的数据类型
  • ELECTION_DETAILS

    RUN_IDPLAN_ID)是主键

PLAN_ID可能出现在REGISTER(或)ELECTION(或)BOTH表格中。

对于输入RUN_ID,我需要选择以下格式的行,以便如果计划只有注册详细信息,则只选择REGISTER_DETAILS

如果某个计划同时包含REGISTER_DETAILSELECTION_DETAILS,则应返回所有详细信息。

报告格式

RUN_ID PLAN_ID REGISTER_DETAILS ELECTION_DETAILS

解决方案

我尝试以下列格式加入表格:

SELECT
 ..
 FROM 
 PLANS A

  LEFT JOIN REGISTER B

  ON (A.PLAN_ID = B.PLAN_ID

      AND B.RUN_ID = 'Input Run Id')

  LEFT JOIN ELECTION C

  ON (A.PLAN_ID = C.PLAN_ID

      AND C.RUN_ID = 'Input Run Id')

但这也是返回REGISTERELECTION表中不存在的计划。

有人可以告诉我查询有什么问题吗?

1 个答案:

答案 0 :(得分:1)

添加

WHERE B.PLAN_ID IS NOT NULL OR
      C.PLAN_ID IS NOT NULL

到查询结尾。

祝你好运。

相关问题