Sql запрос с объединением таблицы с идентификатором не совпадает - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть две таблицы.

Table 1
Id 
UpdateId
Name

Table 2
Table1ID
UpdateID
Address

Каждый раз, когда пользователь обновляется, система insert записывает на table1. Но для table2, только системная insert запись, когда в адресе update.

Пример данных

Table 1
1,1,name1
1,2,name1
1,3,name1update
1,4,name1update
1,5,name1
1,6,name2

Таблица 2

1,1,address
1,4,addressupdate

I хотите получить результат следующим образом

1,1,name1,address
1,2,name1,address
1,3,name1update,address
1,4,name1update,addressupdate
1,5,name1,addressupdate
1,6,name2,addressupdate 

Как использовать условие соединения для достижения, как указано выше?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Вы можете использовать коррелированный подзапрос. Вот стандартный синтаксис, но его можно легко адаптировать к любой базе данных:

select t1.*,
       (select t2.addressid
        from table2 t2
        where t2.table1id = t1.id and
              t2.updateid <= t1.updateid
        order by t2.updateid desc
        fetch first 1 row only
       ) as addressid
from table1 t1;
0 голосов
/ 25 февраля 2020

вы можете использовать левое соединение, когда хотите взять все столбцы из левой таблицы t1, даже если это не совпадает с другой таблицей с updateid столбца в таблице t2.

select t1.id,t1.updateid,t1.name,t2.address from table1 t1
left join table2 t2
on t2.updateid= t1.updateid

вы можете прочитать больше о соединениях здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...