Запрос select c отображением внешних ключей в виде данных
прошу помочь с написанием запроса select
У меня есть две таблицы:
Call, с атрибутами:
id_call (первичный ключ),
date_of_call,
time_of_call,
minute_duration,
id_number_in - входящий номер (внешний ключ на Number.id_number),
id_number_out - исходящий номер (внешний ключ на Number.id_number)Number, с атрибутами:
id_number (первичный ключ),
phone_number
Мне необходимо написать запрос который выведет все данные в преглядном для пользователя виде, т.е вместо внешних ключей должны выводиться данные, я написала вот такой запрос (см. ниже), но встряла с тем что не знаю как реализовать, чтобы вместо ключей в колонках "Входящий" и "Исходящий" отображались номера абонентов
select id_call as "Код звонка",
date_of_call as "Дата звонка",
time_of_call as "Время звонка",
minute_duration as "Продолжительность(в минутах)",
id_number_in as "Входящий",
id_number_out as "Исходящий" from call_tb
inner join number_tb on number_tb.id_number = call_tb.id_number_in;
Результат моего запроса (https://drive.google.com/file/d/1bgm8LQWUv4rsD5cqaR_RbC5wJxngtRVc/view?usp=sharing)
Ответы (1 шт):
Ты можешь использовать два JOIN, чтобы получить номера телефонов вместо внешних ключей. Вот исправленный запрос:
SELECT
c.id_call AS "Код звонка",
c.date_of_call AS "Дата звонка",
c.time_of_call AS "Время звонка",
c.minute_duration AS "Продолжительность (в минутах)",
n_in.phone_number AS "Входящий",
n_out.phone_number AS "Исходящий"
FROM call_tb c
LEFT JOIN number_tb n_in ON c.id_number_in = n_in.id_number
LEFT JOIN number_tb n_out ON c.id_number_out = n_out.id_number;
c — алиас для таблицы call_tb, чтобы не писать длинные названия.
n_in и n_out — два раза подключаем number_tb, чтобы получить данные для входящего и исходящего номера.
LEFT JOIN — если вдруг в call_tb есть записи без соответствующих номеров в number_tb, они всё равно отобразятся, но с NULL в соответствующих полях.
Теперь в столбцах "Входящий" и "Исходящий" будут отображаться реальные номера телефонов вместо id_number.