![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| nicka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 11.6.2003 Репутация: нет Всего: 1 |
У меня в базе(MYSQL) есть таблица - master-detail - для осуществления неограниченных иерархических
вложенностей записей, т.е есть ключевое поле(id) и поле владельца записи(masterid). Мне надо осуществить следующее: Если допустим, у меня есть уровень с 3 под уровнями, т.е 4-ступенчатая вложенность, то при переходе по этим уровням я хочу иметь на странице линки всех родительских уровней моего текущего местонахождения. например, если у меня есть уровни: Уровень1 Уровень1.1 Уровень1.1.1 Уровень1.1.1.1 ТО если я дойду до, скажем, уровня Уровень1.1.1, то вверху должен быть следующий путь: Уровень1 >> Уровень1.1 оба залинкованные на соответствующий уровень. У меня есть sql запрос, который выдает все полчиненные записи, но он почему то в MYSQL не работает.
Вообщем не знаю поняли меня или нет, но жду советов... |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
arial
А при чем тут меню? Я между прочим тоже над этой проблемой бьюсь (не очень усердно), допустим у меня может быть неограниченное по вложениям количество разделов, ссылка на родительский объект идет в поле parentid (допустим), SQL запрос должен выбирать записи пока не встретит в этом поле ноль. То есть на примере:
Вот и как все это выбрать за один запрос? Если только в цикле... но это имхо напряг большой получится PS Мне кажется что это по большей степени вопрос в форум по БД. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Можеш поступить иначе.
Делаеш запрос по masetrid текущего id и находиш его подраздел и таким образом доходиш (создав рекурсию) до коренвого раздела. и получаеш искомый результат. -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Master
То есть это выборка не с кронца, а от начала? А что если там вложенность разделов пару тысяч? Добавлено @ 12:19 На этом форуме кстате, такая фишка вроде реализована. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
||||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
IZ@TOP
почему с начала... как раз с конца надо считать... -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| nicka |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 11.6.2003 Репутация: нет Всего: 1 |
Скажите, а если вложенность максимум 10, то насколько оправдано будет использовать цикл? И еще,
создать рекурсию - это в смысле, использовать цикл, или иначе как-то? |
||||
|
|||||
| Master |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
нет не цикл... вот простейший пример...
-------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
||||
|
|||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Master
И как ты предлагаешь сделать такое с помощью SQL? Желательно с примером. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| arial |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: 6 Всего: 7 |
Прежде чем спрашивать, неплохо бы изучить предложенные классы. У меня всё работает, дерево отрисовывает, обратные ссылки отображает.
Это сообщение отредактировал(а) arial - 3.6.2004, 19:38 -------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
||||
|
|||||
| nicka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 11.6.2003 Репутация: нет Всего: 1 |
Никто не знает? |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
IZ@TOP
я на пальцах объесню... имеем parent_id текущей страницы. Ищем запросом через WHERE id = parent_id. Находим... если parent_id найденого id не корневой что обозначается обычно 0 или null передаем значение parent_id найденого id дальше в ту же функцию и собираем путь... -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Master
Блин, как это с помощью SQL реализовать? С помощью РНР я и так знаю как сделать - цикл/рекурсия. А мне на SQL надо! PS SQL запрос можно увидеть? -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Пихаеш это в функцию и вызываеш её снова если ид_родителя не корневой и в качестве аргумента передаеш ей вытащиный ид_родителя и так едеш до корня -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |