Выберите одно и то же значение столбца из 3 разных таблиц из другого значения с той же строкой кода - PullRequest
0 голосов
/ 07 октября 2019

Как выбрать одно и то же значение столбца из 3 разных таблиц из другого значения с той же строкой кода? Например, у меня есть 3 таблицы:

  • table_one
  • table_two
  • table_three

Все они имеют одинаковое имя столбца, скажем,«date».

table_main имеет столбец с именем type, и значения для каждой строки равны 1, 2 или 3.

Если значение type равно 1, чем имя таблицыдолжно быть "table_one", а "date" должна быть из этой таблицы.

Я хочу в той же строке кода выбрать SELECT "date" из table_ $ num, но $ num должен быть из "типа "так что

1 = one
2 = two
3 = three
SELECT table_main.id, table_main.type, table_$num.date 
FROM table_main 
   LEFT JOIN table_$num ON table_main.id = table_$num.id 
ORDER BY table_main.id ASC

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Если вы хотите условно join к другим таблицам на основе столбца типа в первой таблице, используйте left join - но включите условия в предложение on:

select coalesce(tab_1.date, tab_2.date, tab_3.date)
from table_main tm
     table_one tab_1 
     on tm.id = tab_1.id and tm.type = 1 left join
     table_two tab_2 
     on tm.id = tab_2.id and tm.type = 2 left join
     table_three tab_3 
     on tm.id = tab_3.id and tm.type = 3
0 голосов
/ 07 октября 2019
select  case
             when tm.type = 1 then tab_1.date
             when tm.type = 2 then tab_2.date
             when tm.type = 3 then tab_3.date
         end
      from table_main tm
 left join table_one tab_1 
        on tm.id = tab_1.id
 left join table_two tab_2 
        on tm.id = tab_2.id
 left join table_three tab_3 
       on tm.id = tab_3.id

Исходя из предоставленного кода, я предполагаю, что id является ключевым столбцом, поэтому присоединяйтесь к этому.

Надеюсь, это может помочь.

...