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

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

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

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

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

textual
Листинг программы
  1. select cg1.id,
  2. cg1.parent_category_id,
  3. cg1.name
  4. from category cg1 -- родительская категория
  5. where count (select *
  6. from category cg2 -- дочерняя категория
  7. 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

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

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

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