|
|
|
| Здравствуйте, помогите разобраться с иерархической структурой...
Имеется ввиду система хранения иерархии в mysql, где для каждой строчки сушествует индентификатор и индетификатор родительского раздела, все бы хорошо и понятно, но как построить всю структуру целиком и полностью, или что сложнее часть ее? Ведь не делать же по запросу на каждую строчку, не рационально получается...
Для полной структуры можно конечно извлечь все строчки и далее месным языком, но ради 5 строк извлекать весь массив значений - это не по человечески...
Зарание спасибо | |
|
|
|
|
|
|
|
для: Dimon.st
(26.02.2006 в 19:52)
| | Не очень понятно, что вызывает трудности, может рассмотрим на более конкретном примере? Что строим? Да, иногда неэффективно разворачивать цепочку иерархии, для этого прибегают к денормализации - т.е. попросту в подчинённых таблицах дублируют информацию из таблиц, стоящих вверху по иерархии. | |
|
|
|
|
|
|
|
для: cheops
(26.02.2006 в 23:04)
| | Наверно зря я создал этот топик, ведь это почти аналогия топику на форуме PHP, хотя...
Итак таблица:
--------------------------------------------------------------------------------------------------
|id|fid| title
--------------------------------------------------------------------------------------------------
|1|0|Главное сообщение (топик) - родитель
|2|1|Ответ на топик - потомок 1 степени
|3|1|Ответ на топик №2 - потомок 1 степени
|4|2|Ответ на сообщение 2 - потомок 2 степени
|5|3|Ответ на сообщение 3 - потомок 2 степени
|6|4|Ответ на сообщение 4, которое в свою очередь является ответом на сообщение 2 - потомок 3 степени
---------------------------------------------------------------------------------------------------
|
Где fid это родитель для id.
Нужно средствами скьюл имея параметр получить определенные строчки...
Пример:
имея 1 получить все строчки
имея 2 получить строчки 2,4,6
имея 3 получить строчки 3,5
имея 4 получить строчки 4,6
имея 5 получить строчку 5
имея 6 получить строчку 6
Реально ли это реализовать, притом не 6 (для более сложной иерархии большим количеством) запросами, а меньшим количеством, лучше одним?? | |
|
|
|
|
|
|
|
для: Dimon.st
(27.02.2006 в 01:03)
| | Без рекурсии тут не обойтись - вернее можно, но получится хуже
PS Лучше действительно заводить лишь одну тему. | |
|
|
|