Создание системы поиска по номеру телефона - 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'
Объяснение кода листинга программы
В данном коде производится выборка данных из нескольких таблиц по номеру телефона.
- В первой строке кода
SELECT CASE p.typetable
происходит выборка данных из таблицыphones
по полюtypetable
, которое содержит информацию о типе номера телефона. - Далее, с помощью оператора
WHEN
происходит проверка значения поляtypetable
. Если значение равно 'st', то выбирается фамилия из таблицыsotrudniki
по полюsurname
. Если значение равно 'rm', то выбирается имя из таблицыrooms
по полюname
. Если значение не соответствует ни одному из этих вариантов, то возвращается строка 'Не найден'. - В последней строке кода
FROM phones p
происходит выборка данных из таблицыphones
по полюid_abonent
, которое является идентификатором абонента. - С помощью оператора
LEFT JOIN
происходит объединение таблицsotrudniki
иrooms
по полюid_abonent
. - В строке
WHERE p.Phone='88-85-86'
происходит фильтрация данных по номеру телефона, указанному в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д