| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Бесконечная вложенность. |
| Автор: IZ@TOP 3.6.2004, 16:42 | ||||
Задача следующая: необходимо создать дерево с любым количеством вложений. Таблица выглядит так:
Допустим есть некое количество записей:
Так вот, как выбрать все записи по ссылке parentid пока в нем не встретится 0? |
| Автор: AntonSaburov 3.6.2004, 18:02 |
| Что-то мне подсказывает, что запросом ты не обойдешься. И MySQL такую рекурсию просто не потянет. Надо делать это на клиенте, что мало интересно. Но IMHO по-другому не получится. Я помню был пример для MS SQL, но там была сохраненная процедура и использовались кое-какие штучки именно MS. |
| Автор: Nobody 3.6.2004, 18:52 |
| В MySQL одним запросом никак. На любой базе, где есть хранимые процедуры, делается в два счёта. |
| Автор: arial 3.6.2004, 19:55 | ||||
Вот пример из книги SQL за 24 часа:
И запрос:
Наводит на размышление. ;) |
| Автор: Nobody 3.6.2004, 22:45 |
| arial Хмм... Остроумно Правда таким образом можно выбирать только дерево целиком. Отдельную ветку выбрать не получится. |
| Автор: boevik 3.6.2004, 22:53 | ||
Где в этом запросе построение дерева? Просто выборка пар имен parent и его child names. Эту проблему надо решать рекурсией из проги с выбором сыновей определенного родителя. И погружаться дальше. Если кого заинтересует, есть пример на VB6 |
| Автор: IZ@TOP 4.6.2004, 11:02 |
| С рекурсией я и на РНР сам напишу. А вот интересно как у этого форума это работает? Тут ведь насколько я знаю тоже вложенность поддерживается?! PS А если делать из проги, не скажется ли это на скорости, особенно если это делается для www....? |
| Автор: nicka 4.6.2004, 15:46 | ||
В Oracle например следующий запрос очень удобненько выбирает всю ветку
|
| Автор: IZ@TOP 4.6.2004, 20:12 |
| nicka К сожалению речь не об Оракле... |