Создание запросов - MySQL

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

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

Добрый вечер, товарищи! У меня возникла трудность с написанием этих двух запросах в MYSQL на phpadmin. Найти коллекции, в которых имеется максимальное число картин определенного жанра. Найти такие жанры, которые присутствуют в каждой коллекции. Прилагаю скриншоты созданной БД. Никак не могу сообразить как же это сделать... EDR диаграмма есть, если она будет нужна.

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

textual
Листинг программы
SELECT Janr FROM (
  SELECT Janr, COUNT(*) AS collections_num FROM (
    SELECT Janr, `ID kollekcii` FROM Images GROUP BY Janr, `ID kollekcii`
  ) AS t1 GROUP BY Janr
) AS t2 WHERE collections_num = (SELECT COUNT(*) FROM Collections)

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

В этом коде выполняется запрос SELECT для выборки значения столбца Janr из таблицы, которая называется Images. Вот список действий, которые выполняются в этом коде:

  1. Создается подзапрос (SELECT Janr, COUNT(*) AS collections_num FROM (SELECT Janr, ID kollekcii FROM Images GROUP BY Janr, ID kollekcii) AS t1 GROUP BY Janr), который сначала группирует изображения по Janr и ID kollekcii, а затем считает количество коллекций для каждого Janr.
  2. Результат этого подзапроса (который представляет собой список Janr и количество коллекций для каждого из них) сохраняется в таблице временных данных с именем t1.
  3. Затем выполняется еще один подзапрос (SELECT COUNT(*) FROM Collections), который считает общее количество коллекций в базе данных.
  4. Результат этого подзапроса сохраняется в переменной collections_num.
  5. Основной запрос (SELECT Janr FROM (SELECT Janr, COUNT() AS collections_num FROM (SELECT Janr, ID kollekcii FROM Images GROUP BY Janr, ID kollekcii) AS t1 GROUP BY Janr) AS t2 WHERE collections_num = (SELECT COUNT() FROM Collections)) выбирает значения столбца Janr из таблицы t2, которая была создана во временной переменной t1.
  6. В итоговом результате будет выбран Janr, у которого количество коллекций равно общему количеству коллекций в базе данных.

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

8   голосов , оценка 3.875 из 5