Создание системы поиска по номеру телефона - MySQL

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

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

Уважаемые! Может кто подскажет? Есть две таблицы: 1) sotrudniki(id(primary key), surname, name, otchestvo) 2) rooms(id(primary key), name) Цель: создать поиск по номеру телефона сотрудников и кабинетов в справочнике, в котором будут номера телефонов сотрудников и кабинетов(лаборатория, приемная, склад и т.д) Для этого, я думаю, нужно создать 3-ю таблицу(phones), в которой будут номера телефонов сотрудников и кабинетов. Только вот не знаю, как связать таблицу телефонов(phones) с таблицами sotrudniki и rooms? Если делать внешний ключ в таблице телефонов, то его можно привязать только к одной таблице

Решение задачи: «Создание системы поиска по номеру телефона»

textual
Листинг программы
SELECT CASE p.typetable 
         WHEN 'st' THEN s.surname 
         WHEN 'rm' THEN r.name 
         ELSE 'Не найден' 
       END
  FROM phones p
  LEFT JOIN sotrudniki s ON p.id_abonent=s.id
  LEFT JOIN rooms r ON p.id_abonent=r.id
  WHERE p.Phone='88-85-86'

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

В данном коде производится выборка данных из нескольких таблиц по номеру телефона.

  1. В первой строке кода SELECT CASE p.typetable происходит выборка данных из таблицы phones по полю typetable, которое содержит информацию о типе номера телефона.
  2. Далее, с помощью оператора WHEN происходит проверка значения поля typetable. Если значение равно 'st', то выбирается фамилия из таблицы sotrudniki по полю surname. Если значение равно 'rm', то выбирается имя из таблицы rooms по полю name. Если значение не соответствует ни одному из этих вариантов, то возвращается строка 'Не найден'.
  3. В последней строке кода FROM phones p происходит выборка данных из таблицы phones по полю id_abonent, которое является идентификатором абонента.
  4. С помощью оператора LEFT JOIN происходит объединение таблиц sotrudniki и rooms по полю id_abonent.
  5. В строке WHERE p.Phone='88-85-86' происходит фильтрация данных по номеру телефона, указанному в коде.

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


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

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

12   голосов , оценка 4.167 из 5