Выборка из двух таблиц - MySQL (219700)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Прошу помощи. Есть две таблицы, одна с номерами телефонов и другими данными, вторая с ФИО и номерами телефонов. Сопоставляю таблицы по совпадению номеров и получаю ФИО номер другие_данные.
SELECT addrbook.FIO, inbox.number, inbox.smsdate, inbox.text, inbox.id FROM inbox, addrbook WHERE inbox.number = addrbook.NUMBER AND DATE(smsdate)=DATE(now())
Но естественно если совпадений номеров в таблицах 1 и 2 нет, то ничего не выводится. Как вывести на печать данные по совпадению, и если совпадение нет вывести (абонент не существует)?. пример: Петр Иванов / +79651234556 / Данные_Какие_ТО Абонент не существует / +79659871235 / Данные_Какие_ТО

Решение задачи: «Выборка из двух таблиц»

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

Объяснение кода листинга программы

В представленном коде происходит следующее:

  1. Выполняется запрос на выборку данных из двух таблиц: addrbook и inbox.
  2. В запросе участвуют следующие поля: fio из таблицы addrbook и number, smsdate, text, id из таблицы inbox.
  3. Устанавливается условие для выборки: WHERE DATE(smsdate)=DATE(now()), которое означает, что будут выбраны только те строки, у которых дата в поле smsdate равна текущей дате.
  4. Используется оператор LEFT OUTER JOIN, чтобы объединить строки из двух таблиц по полю number, то есть будут выбраны все строки из таблицы inbox, и только те строки из таблицы addrbook, у которых есть соответствие в таблице inbox по полю number.
  5. Результатом запроса будет набор данных, содержащий выбранные поля: fio, number, smsdate, text, id.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5