Выборка из двух таблиц - MySQL (219700)
Формулировка задачи:
Добрый день!
Прошу помощи.
Есть две таблицы, одна с номерами телефонов и другими данными, вторая с ФИО и номерами телефонов. Сопоставляю таблицы по совпадению номеров и получаю ФИО номер другие_данные.
Но естественно если совпадений номеров в таблицах 1 и 2 нет, то ничего не выводится. Как вывести на печать данные по совпадению, и если совпадение нет вывести (абонент не существует)?.
пример:
Петр Иванов / +79651234556 / Данные_Какие_ТО
Абонент не существует / +79659871235 / Данные_Какие_ТО
SELECT addrbook.FIO, inbox.number, inbox.smsdate, inbox.text, inbox.id FROM inbox, addrbook WHERE inbox.number = addrbook.NUMBER AND DATE(smsdate)=DATE(now())
Решение задачи: «Выборка из двух таблиц»
textual
Листинг программы
SELECT addrbook.fio, inbox.number, inbox.smsdate, inbox.text, inbox.id FROM inbox LEFT OUTER JOIN addrbook ON inbox.number = addrbook.number WHERE DATE(smsdate)=DATE(now());
Объяснение кода листинга программы
В представленном коде происходит следующее:
- Выполняется запрос на выборку данных из двух таблиц:
addrbook
иinbox
. - В запросе участвуют следующие поля:
fio
из таблицыaddrbook
иnumber
,smsdate
,text
,id
из таблицыinbox
. - Устанавливается условие для выборки:
WHERE DATE(smsdate)=DATE(now())
, которое означает, что будут выбраны только те строки, у которых дата в полеsmsdate
равна текущей дате. - Используется оператор
LEFT OUTER JOIN
, чтобы объединить строки из двух таблиц по полюnumber
, то есть будут выбраны все строки из таблицыinbox
, и только те строки из таблицыaddrbook
, у которых есть соответствие в таблицеinbox
по полюnumber
. - Результатом запроса будет набор данных, содержащий выбранные поля:
fio
,number
,smsdate
,text
,id
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д