2016-11-17 3 views
1

Я работаю с супер несогласованной базой данных Oracle, и мне нужна помощь в создании запроса.Выполнение запроса Oracle между тремя таблицами с использованием INNER JOIN

Простое использование базы данных к примеру У меня эти три таблицы.

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», но я не могу это сделать, поскольку я фильтрую witd 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 
Смежные вопросы