我有三张桌子
表1 PLANS - >有所有计划信息
列:
(PLAN_ID是PRIMARY KEY)
表2 注册 - >
列:
REGISTER_DETAILS
(RUN_ID AND PLAN_ID)是主键
表3 选举 - > 列RUN_ID
ELECTION_DETAILS
(RUN_ID
和PLAN_ID
)是主键
PLAN_ID
可能出现在REGISTER
(或)ELECTION
(或)BOTH表格中。
对于输入RUN_ID
,我需要选择以下格式的行,以便如果计划只有注册详细信息,则只选择REGISTER_DETAILS
。
如果某个计划同时包含REGISTER_DETAILS
和ELECTION_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')
但这也是返回REGISTER
和ELECTION
表中不存在的计划。
有人可以告诉我查询有什么问题吗?
答案 0 :(得分:1)
添加
WHERE B.PLAN_ID IS NOT NULL OR
C.PLAN_ID IS NOT NULL
到查询结尾。
祝你好运。