Запрос в MySQL - MySQL (219633)
Формулировка задачи:
Здравствуйте. У меня никак не получается выполнить последнее задание для одной лабораторной работы.
Он просто показывает, какие роли кем были сыграны в конкретных спектаклях.
Подскажите, пожалуйста.
Спасибо.
Задание:
Требуется выводить только те спектакли, в которых один и тот же человек сыграл более одной роли.
У меня получилось создать только такой запрос:SELECT swows.n_show, roles.n_role, employees.fio_emp FROM swows, roles, showroles, roleactor, employees, showactor WHERE showroles.id_role = roles.id_role AND showroles.id_show = swows.id_show AND roleactor.id_emp = employees.id_emp AND roleactor.id_role = roles.id_role
Решение задачи: «Запрос в MySQL»
textual
Листинг программы
WITH q AS (SELECT 'Иванов' AS fio, 'Грозный' AS show, 'Иван' AS ROLE FROM dual UNION ALL SELECT 'Иванов' AS fio, 'Грозный' AS show, 'Петька' AS ROLE FROM dual UNION ALL SELECT 'Петров' AS fio, 'Грозный' AS show, 'Иванов' AS ROLE FROM dual UNION ALL SELECT 'Иванов' AS fio, 'Чайка' AS show, 'Чайка' AS ROLE FROM dual UNION ALL SELECT 'Сидоров' AS fio, 'Чайка' AS show, 'Дублёр чайки' AS ROLE FROM dual UNION ALL SELECT 'Петров' AS fio, 'Чайка' AS show, 'Жертва чайки' AS ROLE FROM dual) SELECT fio, show FROM q GROUP BY fio, show HAVING COUNT(ROLE) > 1
Объяснение кода листинга программы
- Создаётся представление (Common Table Expression)
q
с помощью оператораWITH
. - В теле представления происходит выборка данных из таблицы
dual
(в данном случае это может быть любая таблица, например,information_schema.users
). - В выборке указываются имена столбцов и их значения для каждой строки.
- Затем происходит выборка данных из представления
q
с помощью оператораSELECT
. - В результате выборки выбираются только столбцы
fio
иshow
. - С помощью оператора
GROUP BY
происходит группировка строк по столбцамfio
иshow
. - С помощью оператора
HAVING
производится фильтрация строк по условиюCOUNT(ROLE) > 1
, то есть выбираются только те строки, в которых количество значений столбцаROLE
больше одного.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д