使用INNER JOIN在三个表之间进行Oracle查询

时间:2016-11-17 15:25:05

标签: oracle oracle11g

我正在使用超级不一致的Oracle数据库,我需要帮助才能进行查询。

将数据库简单化为一个示例我有这三个表。

TABLE_F
------
id = 3
title = "Hello"


TABLE_M
------
id = 3
category = "val3"
flid = 5


TABLE_X
------
id = 3
body = "How are you?"
flid = 30

id = 3
body= "Bye bye"
flid = 35

我想进行查询以获得以下结果:

id | title | mat | BODY          |  OTHER 
------------------------------------------
3    helllo  val3  How are you?    Bye bye

我的查询是:

SELECT
TABLE_F.title,
TABLE_M.category,
TABLE_X.body as BODY
FROM TABLE_F
INNER JOIN TABLE_M
ON TABLE_F.id=TABLE_M.id
INNER JOIN TABLE_X
ON TABLE_F.id=TABLE_X.id
WHERE TABLE_M.flid=5 AND TABLE_X.flid=30;

我得到的地方:

id | title | mat | BODY         
--------------------------------
3    helllo  val3  How are you? 

我需要在查询中添加TABLE_X.body as OTHER(其中包含“ Bye bye ”字符串),但我不能这样做,因为我正在过滤{{1为了得到身体。

这不是我的数据库,我无法改变设计。我需要通过一个查询得到所需的输出(我不知道是否可能)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用别名

连接table_x两次
SELECT_F.id, 
  TABLE_F.title,
  TABLE_M.category  mat,
  TABLE_X.body  BODY,
  Y.body  OTHER BODY,  
FROM TABLE_F
  INNER JOIN TABLE_M ON TABLE_F.id=TABLE_M.id
  INNER JOIN TABLE_X ON TABLE_F.id=TABLE_X.id AND TABLE_X.flid=30
  INNER JOIN TABLE_X Y ON TABLE_F.id=Y.id AND Y.flid=35