从三个不同的表中选择匹配值,然后在Oracle中将它们组合到一个表中

时间:2018-07-01 10:00:59

标签: sql oracle jointable

我有四个表,如下所示

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)

现在,我想选择一个特定的审阅,并要使用

创建一个表

关联会议

链接的答案

链接的任务

我应该如何进行?

我尝试编写联接查询,但是仅在所有表中都存在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;

注意:这里我尝试使用静态Rev_ID = 142来检查数据。

从上面的查询中,仅当所有四个表中都存在数据时,我才得到输出;但是,如果任何表中都不存在数据,则不返回剩余值。

我要在最终输出中至少显示所有表的名称。

1 个答案:

答案 0 :(得分:1)

尝试以下方法,让我们知道这是否满足您的要求。

<img src={ data.posts[0].img }/>

SQL Fiddle Demo

如果上述SQL很好,请在其前面加上create table或view语法以将它们组合为一个。