Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Вопрос для гуру.Выборка древовидной структуры (Евгений) 24/02/2005 - 16:36:37
      Re: Вопрос для гуру.Выборка древовидной структуры (Dinky) 24/02/2005 - 19:06:17
      Re: 2 Dinky (Евгений) 24/02/2005 - 20:25:00
      Re: 2 Dinky (Dinky) 24/02/2005 - 20:58:03
      Re: 2 Dinky (Евгений) 24/02/2005 - 21:35:23
      Re: 2 Dinky (DNick) 25/02/2005 - 01:28:11
      Re: 2 Dinky (Dinky) 25/02/2005 - 01:46:35
      Re: А не проще ли хранить путь целиком? (Dubrovsky) 25/02/2005 - 09:08:18
      Re: 2 DNick (Евгений) 25/02/2005 - 11:02:43
      Re: А не проще ли хранить путь целиком? (Евгений) 25/02/2005 - 11:06:23
      Re: А не проще ли хранить путь целиком? (Dubrovsky) 25/02/2005 - 15:27:00
      Re: А не проще ли хранить путь целиком? (Евгений) 25/02/2005 - 20:34:11
      Re: 2 DNick (Dinky) 25/02/2005 - 22:41:40
      Re: 2 DNick (Евгений) 26/02/2005 - 11:08:15
      Re: 2 Евгений (Dinky) 27/02/2005 - 07:19:19
      Re: поправка (2 Евгений) (Dinky) 27/02/2005 - 07:29:23
      Re: короче! (2 Евгений) (Dinky) 27/02/2005 - 07:42:16
      Re: короче! (2 Евгений) (Евгений) 27/02/2005 - 19:03:46
      Re: короче! (2 Евгений) (cooler13) 28/02/2005 - 00:34:16
      Re: короче! (2 Евгений) (Dinky) 28/02/2005 - 02:33:37
      Re: 2Dinky (2 Евгений) (Евгений) 28/02/2005 - 14:37:54

> Original message text:
> From: Евгений - 24/02/2005 - 16:36:37
> Subject:Вопрос для гуру.Выборка древовидной структуры
> -----------------
> Имеется таблица, в которой хранится некая древовидная структура, например, файловая система, состоящая из папок, которые, в свою очередь, могут содержать другие папки. Таблица состоит из полей
> ID - уникальный идентификатор папки
> Parent - идентификатор родительской папки
> Name - имя папки
> Level - уровень вложенности
>
> Пример:
> +----+--------+--------------------------+-------+
> ! ID ! Parent ! Name ! Level !
> +----+--------+--------------------------+-------+
> ! 1 ! 0 ! Soft ! 0 !
> ! 2 ! 1 ! OS ! 1 !
> ! 3 ! 1 ! Games ! 1 !
> ! 4 ! 1 ! Programming ! 1 !
> ! 5 ! 2 ! Linux ! 2 !
> ! 6 ! 2 ! Windows ! 2 !
> ! 7 ! 3 ! HalfLife ! 2 !
> ! 8 ! 3 ! Doom3 ! 2 !
> ! 9 ! 4 ! PHP ! 2 !
> ! 10 ! 4 ! MySQL ! 2 !
> +----+--------+--------------------------+-------+
>
> Эта таблица соответствует дереву
>
> Soft
> !
> +------------------+--------------+
> ! ! !
> OS Games Programming
> ! ! !
> +---+---+ +--+----+ +--+--+
> ! ! ! ! ! !
> Linux Windows HalfLife Doom3 PHP MySQL
>
> Задача: зная ID папки одним запросом получить "путь" к этой папке.
> Например, задав ID=8 получить след таблицу
>
> +----+--------+--------------------------+-------+
> ! ID ! Parent ! Name ! Level !
> +----+--------+--------------------------+-------+
> ! 8 ! 3 ! Doom3 ! 2 !
> ! 3 ! 1 ! Games ! 1 !
> ! 1 ! 0 ! Soft ! 0 !
> +----+--------+--------------------------+-------+
>
> Я попытался сделать это следующим образом
>
> SET @pID:=8;
> SELECT *,(@pID:=Parent) FROM mytable WHERE ID=@pID ORDER BY Level DESC;
>
> Но, почему-то, MySQL возвращает только одну строку:
>
> +----+--------+--------------------------+-------+
> ! ID ! Parent ! Name ! Level !
> +----+--------+--------------------------+-------+
> ! 8 ! 3 ! Doom3 ! 2 !
> +----+--------+--------------------------+-------+
>
> В чем ошибка?
> И возможно ли, в принципе, решить подобную задачу. Может есть идеи как по-другому реализовать структуру таблицы?
>
> Подскажите, пожалуйста.
>


From: Евгений - 25/02/2005 - 20:34:11
Subject:А не проще ли хранить путь целиком?
-----------------
Неудобно, все таки лучше воспользоваться модификацией этого метода, храня в поле Path не названия, а ID объектов. А путь выбирать одним запросом. (кто там говорил, что невозможно по другому?)
Видимо придется воспользоваться именно этим методом. А жаль, метод с переменной пользователя был бы очень изящен. Я еще подниму этот вопрос на других форумах, ибо никто так толком и не объяснил почему не работал мой запрос.
Всем сапасибо. Если что то нарою, отпишу здесь.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
20457



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |