Oracle SQL объединение таблиц рядом - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть 3 запроса на выборку, которые я хотел бы объединить. Общий столбец имя . Я не хочу использовать решения UNION ALL , поскольку в моих запросах выбора может быть много столбцов.

(select 'e1' name,1 columna  from dual) table_1
name  columna  
e1    1  
(select 'h1' name,2 columnb  from dual) table_2
name    columnb    
h1      2  
(select 't1' name,3 columnc  from dual) table_3
name    columnc
t1      3  

вывод, который я ищу :

name columna columnb columnc  
e1   1     
h1           2
t1                   3

Я считаю, что мне нужно полное внешнее соединение. Я попробовал левый внешний с (+) синтаксисом.

select table_1.name,columna,columnb,columnc from  
(select 'e1' name,1 columna  from dual) table_1,  
(select 'h1' name,2 columnb  from dual) table_2,  
(select 't1' name,3 columnc  from dual) table_3  
where  
table_1.name=table_2.name(+)  
and table_1.name=table_3.name(+)  

но вывод:

name columna columnb columnc
e1   1     

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Возможно, вы ищете что-то вроде следующего? предполагается, что столбец имени уникален в каждой таблице.

1 голос
/ 06 февраля 2020

Просто используйте union all:

select 'e1' name, 1 columna, null columnb, null columnc from dual
union all
select 'h1', null, 2, null from dual
union all
select 't1', null, null, 3 from dual

Демонстрация на DB Fiddle :

NAME | COLUMNA | COLUMNB | COLUMNC
:--- | ------: | ------: | ------:
e1   |       1 |    <em>null</em> |    <em>null</em>
h1   |    <em>null</em> |       2 |    <em>null</em>
t1   |    <em>null</em> |    <em>null</em> |       3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...