Запрос в MySQL - MySQL (219633)

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

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

Здравствуйте. У меня никак не получается выполнить последнее задание для одной лабораторной работы.

Задание:

Требуется выводить только те спектакли, в которых один и тот же человек сыграл более одной роли.

У меня получилось создать только такой запрос:
Листинг программы
  1. SELECT swows.n_show, roles.n_role, employees.fio_emp
  2. FROM swows, roles, showroles, roleactor, employees, showactor
  3. WHERE showroles.id_role = roles.id_role
  4. AND showroles.id_show = swows.id_show
  5. AND roleactor.id_emp = employees.id_emp
  6. AND roleactor.id_role = roles.id_role
Он просто показывает, какие роли кем были сыграны в конкретных спектаклях. Подскажите, пожалуйста. Спасибо.

Решение задачи: «Запрос в MySQL»

textual
Листинг программы
  1. WITH q AS (SELECT 'Иванов' AS fio, 'Грозный' AS show, 'Иван' AS ROLE  FROM dual UNION ALL
  2. SELECT 'Иванов' AS fio, 'Грозный' AS show, 'Петька' AS ROLE  FROM dual UNION ALL
  3. SELECT 'Петров' AS fio, 'Грозный' AS show, 'Иванов' AS ROLE  FROM dual UNION ALL
  4. SELECT 'Иванов' AS fio, 'Чайка' AS show, 'Чайка' AS ROLE  FROM dual UNION ALL
  5. SELECT 'Сидоров' AS fio, 'Чайка' AS show, 'Дублёр чайки' AS ROLE  FROM dual UNION ALL
  6. SELECT 'Петров' AS fio, 'Чайка' AS show, 'Жертва чайки' AS ROLE  FROM dual)
  7. SELECT fio, show FROM q
  8. GROUP BY fio, show
  9. HAVING COUNT(ROLE) > 1

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

  1. Создаётся представление (Common Table Expression) q с помощью оператора WITH.
  2. В теле представления происходит выборка данных из таблицы dual (в данном случае это может быть любая таблица, например, information_schema.users).
  3. В выборке указываются имена столбцов и их значения для каждой строки.
  4. Затем происходит выборка данных из представления q с помощью оператора SELECT.
  5. В результате выборки выбираются только столбцы fio и show.
  6. С помощью оператора GROUP BY происходит группировка строк по столбцам fio и show.
  7. С помощью оператора HAVING производится фильтрация строк по условию COUNT(ROLE) > 1, то есть выбираются только те строки, в которых количество значений столбца ROLE больше одного.

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут