Таблица с деревом категорий, запросы БД - MySQL
Формулировка задачи:
Приветствую всех. Помогите пожалуйста с реализацией данной задачи :
Дана таблица с деревом категорий
Напишите запросы (БД - “правильная”, умеющая делать подзапросы, различные соединения и прочее):
1. На выборку всех категорий верхнего уровня, начинающихся на “авто”
2. На выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины)
3. На выборку всех категорий нижнего уровня (т.е. не имеющих детей)
Напишите индексы, которые позволят сделать эти запросы быстрее.
1 запрос(мой) не точно(исправьте если что)
остальные не знаю, помогите.
CREATE TABLE category ( id INTEGER NOT NULL PRIMARY KEY, parent_category_id INTEGER REFERENCES category(id), name VARCHAR(100) NOT NULL );
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
Объяснение кода листинга программы
В данном коде выполняется запрос к базе данных, который выбирает из таблицы категории определенные данные. Вот список действий, которые происходят в этом коде:
cg1.id
- выбирается идентификатор категории.cg1.parent_category_id
- выбирается идентификатор родительской категории.cg1.name
- выбирается название категории.where count (select * from category cg2 where cg1.id = cg2.parent_category_id) <= 3
- в этом условии используется функцияcount
, которая считает количество дочерних категорий для каждой родительской категории. Затем проверяется, что это количество не превышает 3. Таким образом, данный запрос выбирает категории, у которых есть не более трех дочерних категорий.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д