Таблица с деревом категорий, запросы БД - MySQL

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

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

Приветствую всех. Помогите пожалуйста с реализацией данной задачи : Дана таблица с деревом категорий
CREATE TABLE category (
 id INTEGER NOT NULL PRIMARY KEY,
 parent_category_id INTEGER REFERENCES category(id),
 name VARCHAR(100) NOT NULL
 );
Напишите запросы (БД - “правильная”, умеющая делать подзапросы, различные соединения и прочее): 1. На выборку всех категорий верхнего уровня, начинающихся на “авто” 2. На выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины) 3. На выборку всех категорий нижнего уровня (т.е. не имеющих детей) Напишите индексы, которые позволят сделать эти запросы быстрее. 1 запрос(мой) не точно(исправьте если что)
SELECT GROUP BY ( id, parent_category_id, name ) FROM category WHERE ORDER BY name = 'авто' ASC
остальные не знаю, помогите.

Решение задачи: «Таблица с деревом категорий, запросы БД»

textual
Листинг программы
select cg1.id,
       cg1.parent_category_id,
       cg1.name
  from category cg1                                        -- родительская категория
 where count (select *
                from category cg2                          -- дочерняя категория
               where cg1.id = cg2.parent_category_id) <= 3

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

В данном коде выполняется запрос к базе данных, который выбирает из таблицы категории определенные данные. Вот список действий, которые происходят в этом коде:

  1. cg1.id - выбирается идентификатор категории.
  2. cg1.parent_category_id - выбирается идентификатор родительской категории.
  3. cg1.name - выбирается название категории.
  4. where count (select * from category cg2 where cg1.id = cg2.parent_category_id) <= 3 - в этом условии используется функция count, которая считает количество дочерних категорий для каждой родительской категории. Затем проверяется, что это количество не превышает 3. Таким образом, данный запрос выбирает категории, у которых есть не более трех дочерних категорий.

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


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

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

15   голосов , оценка 3.8 из 5