#1 26.10.06 16:10
подскажите запрос mysql для каталога?
есть каталог:
id ,parent. name
ну задача классическая: parent=0 верхний уровень
например 1,2,3 на верхнем уровне.
как вытащить всю ветку принадлежащую 1 идентификатору?
рекурсивно вызывать функцию, это я могу, но люди хорошо разбирающиеся в скл говорят можно одним запросом выдрать? никто не знает как это сделать?
Offline
#3 26.10.06 23:38
Re: подскажите запрос mysql для каталога?
Укроп написал(а):
я думаю что при внесенни в таблицу ИДшники должны быть отсортированым деревом.
5
3 7
2 4 6 8
тогда если я хочу выбрать правый узел каталога 5 то я выберу id>5
если в каталоге записей больше - то и сынов у ноды должно быть больше )
проблема - при каждой вставке-удалении придется пересортировывать дерево. для SQL это не подходит ;)
Это не я бляяя...
Исправлено Укроп (26.10.06 23:41)
Offline
#5 26.10.06 23:55
Re: подскажите запрос mysql для каталога?
Укроп написал(а):
кстати вот и решение нашел
должна быть таблица вида
CREATE TABLE `Files` (
`IDFile` int(11) NOT NULL auto_increment,
`FileName` varchar(255) NOT NULL default '',
`URLPath` varchar(255) NOT NULL default '',
`IsDirectory` tinyint(4) NOT NULL default '0',
`IDParentDir` int(11) default NULL,
`FileSize` bigint(20) default NULL,
) TYPE=MyISAM ;
где URLPath - это полный путь вида c:/Distr/games/NFSU2/NFSUG2_CD1
тогда если я хочу взять все файлы и каталоги из c:/Distr/games/ я составляю соотв запрос по маске )
Это не я бляяя...
Offline
#6 27.10.06 09:07
Re: подскажите запрос mysql для каталога?
про., это не ответ, то что Join сам к себе это пнятно но как сделать на нем рекурсию?
Укроп, спасибо за рассуждения, и помощь в частности, над таким вариантом я думал, по моему сильно усложняется, тогда организация
т.е. мы получим каталог в котором
Id
parent
parents_list
name
и тогда например
Код::
id parent parent_list name 1 0 0 root 2 1 0|1 child1 3 2 0|1|2 child_child1 4 1 0|1 child2
я об этом уже думал, но мне сказали что именно при первой организации каталога, возможно достать данные 1 ветки, это было на собеседовании, как раз проверяет насколько занешь SQL Ж-)
PS второй вопрос дать ответ запросом есть ли в таблице повторяющиеся записиЖ-), я нашел ответ)
Исправлено Stell Hawk (27.10.06 09:07)
Offline

