2016-11-17 60 views
1

我正在處理超級不一致的Oracle數據庫,我需要幫助才能進行查詢。使用INNER JOIN在三個表之間進行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」字符串),但我無法做到這一點,因爲我正在過濾flid=30爲了得到身體。

這不是我的數據庫,我不能改變設計。我需要一個查詢(我不知道它是否可能)得到期望的輸出。

在此先感謝。

+0

加入兩倍TABLE_X與FLID = 35 – Thomas

回答

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