как получить определенные записи из двух таблиц

#sql #sqlite #db-browser-sqlite

#sql #sqlite #db-browser-sqlite

Вопрос:

У меня есть 2 таблицы, первая таблица содержит номера телефонов и имя владельца, а вторая таблица содержит телефон, имя, а также город и улицу. проблема во второй таблице заключается в том, что имя владельца — это имя того, кто платит за номер телефона, а не фактического владельца (например, если мой папа заплатит за мой номер телефона, его имя появится рядом с моим номером). что я хочу сделать, так это написать запрос, который проверяет, существует ли номер телефона в обеих таблицах, и если это так, я хочу увидеть имя владельца из первой таблицы и другую информацию из второй таблицы.

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

пример ожидаемого результата:

введите описание изображения здесь

я понятия не имею, как это сделать, было бы очень полезно, если бы кто-нибудь мог сказать мне, где искать ответ.

Ответ №1:

Вы хотите full join . Простой способ реализовать это с помощью SQLite — использовать union all :

 select t2.address, t2.city, t1.phone, t1.name
from table1 t1 left join
     table2 t2
     using (phone)
union all
select t2.address, t2.city, t2.phone, t2.name
from table2 t2
where not exists (select 1 from table1 t1 where t1.phone = t2.phone);