Объедините общие столбцы из разных таблиц и выберите первый наиболее заполненный - PullRequest
0 голосов
/ 01 марта 2020

У меня есть три таблицы: A, B и C. Записи в B и C содержат столбцы data1 и data2, которые могут иметь значение null, и id_A.

Мне нужно получить любой для data1 и data2 для каждой записи в A (все столбцы из A).

Таблица A (другие столбцы опущены):

id
1
2
3
4
5

Таблица B:

id | id_A | data1 | data2
1    1      b11     null
2    1      null    b12
3    2      null    b22
4    5      b51     null

Таблица C:

id | id_A | data1 | data2
1    1      c11     c12
2    2      c21     null
3    3      c31     null
4    5      c51     null

Результат:

id | data1 | data2
1    b11     b12
2    c21     b22
3    c31     null
4    null    null
5    b51     null

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

вы можете использовать - COALESCE (val1, val2, val3 ...)

select a.id, coalesce(b.data1,c.data1), coalesce(b.data2,c.data2) from Aleft join B on .id=b.id_a left join C on a.id=c.id_a 
0 голосов
/ 01 марта 2020

Я думаю, вы хотите left join и агрегирование:

select a.id, coalesce(max(b.data1), max(c.data1)) as data1,
       coalesce(max(b.data2), max(c.data2)) as data2
from a left join
     b
     on a.id = b.id_a left join
     c
     on a.id = c.id_a
group by a.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...