Выполнение запроса 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 для того, чтобы получить тело.

Это не моя база данных, и я не могу изменить дизайн. Мне нужно получить желаемый результат с помощью одного запроса (который я не знаю, если это возможно).

Заранее спасибо.

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
Другие вопросы по тегам