полное соединение 2 таблиц в mariaDB - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть 2 таблицы

Table1
Year,Month, data     
2017,1,2
2018,2,10

Table2
Year,Month,data2
2017,1,5
2019,2,2

Я пытаюсь объединить таблицы в 1 таблицу, в которой мы получаем все строки из обеих таблиц следующим образом.

Year,Month,data,data2
2017 ,1,2,5
2018,2,10,NULL
2019,2,NULL,2

Это выглядит как стандартвнешние объединения не будут работать здесь, и я также не могу использовать Union ALL. Есть ли какой-либо запрос на внешнее соединение, чтобы выполнить это?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2019

Вы должны использовать UNION для получения всего года и месяца из обеих таблиц и использовать левое соединение, чтобы связать это с table1 и table2

select a.Year , a.Month, b.data, c.data2
from (
  select Year,Month
  from Table1
  union 
  select Year,Month
  from Table2
) a 
left join  table1 b  on a.Year = b.Year and a.month = b. month 
left  join table2 c on a.Year = c.Year and a.month = c. month 
1 голос
/ 03 ноября 2019

То, что вы действительно хотите, это full join. Один метод, который часто работает, это union all и group by:

select year, month, max(data) as data, max(data2) as data2
from ((select year, month, data, null as data2
       from table1
      ) union all
      (select year, month, null, data2
       from table2
      )
     ) t
group by year, month;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...