Дана таблица с деревом категорий:
CREATE TABLE category (
id integer not null primary key,
parent_category_id integer references category(id),
name varchar(100) not null
);
Напишите запросы (БД - “правильная”, умеющая делать подзапросы, различные соединения и прочее):
1. На выборку всех категорий верхнего уровня, начинающихся на “авто”
2. На выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины)
3. На выборку всех категорий нижнего уровня (т.е. не имеющих детей)
Напишите индексы, которые позволят сделать эти запросы быстрее.
Надеюсь на вашу помощь. Спасибо.
Спустя 4 часа, 29 минут, 27 секунд (28.10.2011 - 16:52) RCuPeR написал(а):
Мужики, не знает никто ?
Спустя 10 минут, 3 секунды (28.10.2011 - 17:02) Игорь_Vasinsky написал(а):
т ак ты блин структуру БД то напиши.
Спустя 20 минут, 44 секунды (28.10.2011 - 17:22) RCuPeR написал(а):
CREATE TABLE category (
id integer not null primary key,
parent_category_id integer references category(id),
name varchar(100) not null
);
Ну вот же.
Спустя 44 секунды (28.10.2011 - 17:23) Игорь_Vasinsky написал(а):
это 1 таблица, а иы говоришь про
Цитата |
1. На выборку всех категорий верхнего уровня, начинающихся на “авто” 2. На выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины) 3. На выборку всех категорий нижнего уровня (т.е. не имеющих детей) |
Спустя 3 минуты, 52 секунды (28.10.2011 - 17:27) RCuPeR написал(а):
Это все, что задано.
В принципе, по структуре тут понятно. В id ясно чего, в "parent_id" айдишник родительской категории если такая существует, иначе NULL, ну и в нейм все ясно.
В принципе, по структуре тут понятно. В id ясно чего, в "parent_id" айдишник родительской категории если такая существует, иначе NULL, ну и в нейм все ясно.
Спустя 21 минута, 21 секунда (28.10.2011 - 17:48) Invis1ble написал(а):
RCuPeR
я сначала написал пару запросов (по 1-му и 3-му пункту), но потом решил что это халява и тебе стоит самому в этом разобраться и не стал постить
я сначала написал пару запросов (по 1-му и 3-му пункту), но потом решил что это халява и тебе стоит самому в этом разобраться и не стал постить
Спустя 26 минут, 42 секунды (28.10.2011 - 18:15) Игорь_Vasinsky написал(а):
parents и childs хранятся в разных таблицах БД - пора почитать про JOIN
Спустя 3 минуты, 29 секунд (28.10.2011 - 18:18) Invis1ble написал(а):
Игорь_Vasinsky
Цитата |
parents и childs хранятся в разных таблицах БД - пора почитать про JOIN |
Интересно, как ты при такой архитектуре сделаешь дерево с неограниченным уровнем вложенности.
Спустя 45 секунд (28.10.2011 - 18:19) RCuPeR написал(а):
Цитата (Invis1ble @ 28.10.2011 - 14:48) |
RCuPeR я сначала написал пару запросов (по 1-му и 3-му пункту), но потом решил что это халява и тебе стоит самому в этом разобраться и не стал постить |
Не получается мне в этом мускуле разгребаться
Да и времени нету
Может все таки поможешь ?
Спустя 1 минута, 22 секунды (28.10.2011 - 18:21) Игорь_Vasinsky написал(а):
Invis1ble
с горем попалам.
пропустил я момент с бесконечной вложенностью, пропустил.
с горем попалам.
пропустил я момент с бесконечной вложенностью, пропустил.
Спустя 8 минут, 26 секунд (28.10.2011 - 18:29) Invis1ble написал(а):
1.
3.
по второму не знаю, как грамотно решается
Вообще,
select * from `category` where `parent_category_id` is null and `name` like 'авто%'
3.
select l1 . * from `category` l0
right join `category` l1 on l1.`id` = l0.`parent_category_id`
where l0.`id` is null
по второму не знаю, как грамотно решается
Вообще,
Цитата |
Да и времени нету |
конечно улыбнуло
Спустя 1 минута, 54 секунды (28.10.2011 - 18:31) Invis1ble написал(а):
Цитата |
с горем попалам. |
да никак, тебе прийдется для каждого наследника создавать отдельную таблицу
Спустя 2 минуты, 32 секунды (28.10.2011 - 18:33) RCuPeR написал(а):
Invis1ble, спасибо большое. Осталось как-то решить второй вопрос.
Цитата |
конечно улыбнуло |
Да, действительно смешно. Но времени на изучение грамотной работы с мускулом нету. Все никак руки не дойдут.
Спустя 13 минут, 27 секунд (28.10.2011 - 18:47) Игорь_Vasinsky написал(а):
Invis1ble
Цитата |
да никак, тебе прийдется для каждого наследника создавать отдельную таблицу |
да легко, лишь бы заплатили.
_____________
Гнусный социопат с комплексом Бога.