#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);