Запрос в 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
больше одного.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д