在 Oracle 中从三个不同的 table 中选择匹配值并将它们合并为一个 table
Selecting Matching values from three different table and combining them in one table in Oracle
我有四个table如下
Review (REV_ID pk , REV_NAME)
Meeting (MEETING_ID pk,MEETING_NAME,REV_ID fk to Review)
Task (TASK_ID pk,TASK_NAME,REV_ID fk to Review)
Answer (ANS_ID pk,ANS_NAME,REV_ID fk to Review)
现在我想 select 一个特定的评论,并想用
创建一个 table
关联会议
链接的答案
链接任务
我该如何处理?
我尝试编写连接查询,但只有在所有 table 中都存在 Rev_ID 时我才能获取数据?
select * from
(SELECT *
FROM meeting
WHERE EXISTS (SELECT *
FROM review WHERE meeting.rev_id
=review.rev_id)
and meeting.rev_id=142),
(SELECT *
FROM answer
WHERE EXISTS (SELECT *
FROM review WHERE answer.rev_id
=rev.rev_id)
and answer.ans_rev_id=142),
(SELECT *
FROM task
WHERE EXISTS (SELECT *
FROM review WHERE task.rev_id
=review.rev_id)
and task.rev_id=142) r;
注意:这里我尝试了static Rev_ID =142来检查数据。
从上面的查询中,只有当所有四个 table 中都存在数据时,我才会得到输出,但是如果数据在任何 table 中都不存在,它就没有 return 剩余值。
我想要 at-least 最终输出中所有 table 的名称。
尝试以下操作,如果这符合您的要求,请告诉我们。
SELECT rv.rev_id,
rv.rev_name,
mt.meeting_name,
tk.task_name,
ans.ans_name
FROM review rv
LEFT OUTER JOIN meeting mt ON (rv.rev_id = mt.rev_id)
LEFT OUTER JOIN task tk ON (rv.rev_id = tk.rev_id)
LEFT OUTER JOIN answer ans ON (rv.rev_id = ans.rev_id)
WHERE rv.rev_id = 142
如果上面的SQL没问题,在前面加上create table或者view syntax把它们合二为一
我有四个table如下
Review (REV_ID pk , REV_NAME)
Meeting (MEETING_ID pk,MEETING_NAME,REV_ID fk to Review)
Task (TASK_ID pk,TASK_NAME,REV_ID fk to Review)
Answer (ANS_ID pk,ANS_NAME,REV_ID fk to Review)
现在我想 select 一个特定的评论,并想用
创建一个 table关联会议
链接的答案
链接任务
我该如何处理?
我尝试编写连接查询,但只有在所有 table 中都存在 Rev_ID 时我才能获取数据?
select * from
(SELECT *
FROM meeting
WHERE EXISTS (SELECT *
FROM review WHERE meeting.rev_id
=review.rev_id)
and meeting.rev_id=142),
(SELECT *
FROM answer
WHERE EXISTS (SELECT *
FROM review WHERE answer.rev_id
=rev.rev_id)
and answer.ans_rev_id=142),
(SELECT *
FROM task
WHERE EXISTS (SELECT *
FROM review WHERE task.rev_id
=review.rev_id)
and task.rev_id=142) r;
注意:这里我尝试了static Rev_ID =142来检查数据。
从上面的查询中,只有当所有四个 table 中都存在数据时,我才会得到输出,但是如果数据在任何 table 中都不存在,它就没有 return 剩余值。
我想要 at-least 最终输出中所有 table 的名称。
尝试以下操作,如果这符合您的要求,请告诉我们。
SELECT rv.rev_id,
rv.rev_name,
mt.meeting_name,
tk.task_name,
ans.ans_name
FROM review rv
LEFT OUTER JOIN meeting mt ON (rv.rev_id = mt.rev_id)
LEFT OUTER JOIN task tk ON (rv.rev_id = tk.rev_id)
LEFT OUTER JOIN answer ans ON (rv.rev_id = ans.rev_id)
WHERE rv.rev_id = 142
如果上面的SQL没问题,在前面加上create table或者view syntax把它们合二为一