|
|
|
|
|
для: Trianon
(25.01.2007 в 12:27)
| | >Можно извлечь сразу все id и pid первым запросом, построить порядок id-ов, и извлечь все id, pid, name в нужном порядке вторым запросом.
>
>Чтобы вообще всё извлекать за один запрос, нужно выбрать другую структуру представления дерева.
А можно примерчик небольшой, "на пальцах"?
И первого, предложенного вами варианта, и про др. структуру представленя дерева тоже очень не помешало бы по подробнее. | |
|
|
|
|
|
|
|
для: Trianon
(25.01.2007 в 12:59)
| | Если оформить его в качестве функции, возвращающей дерево целиком, то такой вариант имеет право на существование. Но вот дополнять и редактировать эту функцию весьма неуютно.
PS Ах да - вложенность в этом случае, все-таки, конечная. | |
|
|
|
|
|
|
|
для: Loki
(25.01.2007 в 12:51)
| | как я понимаю, вариант с цепочкой LEFT JOINов интересен разве что чисто академически.
Подбирать данные из результата такого запроса - крайне малоприятное занятие. | |
|
|
|
|
|
|
|
для: tAleks
(25.01.2007 в 12:00)
| | Можно использованием многократных LEFT JOIN'ов, но все равно придется достраивать структуру в скрипте. Я такую штуку один раз делал, но работать с ней не очень удобно. | |
|
|
|
|
|
|
|
для: tAleks
(25.01.2007 в 12:00)
| | Можно извлечь сразу все id и pid первым запросом, построить порядок id-ов, и извлечь все id, pid, name в нужном порядке вторым запросом.
Чтобы вообще всё извлекать за один запрос, нужно выбрать другую структуру представления дерева. | |
|
|
|
|
|
|
| Есть таблица:
- id
- pid
- name
pid - это id родителя.
В таблице храняться записи:
- Запись 1 (корневая. pid = NULL)
- Запсиь 3 (вложенная. pid = 1)
- Запись 2 (корневая. pid = NULL)
- Запись 4 (вложенная. pid = 2)
.... и т.д. и т.п.
Можно ли сделать такой запрос, чтобы извлечь всю струткуру сразу? Со всеми вложенными сециями. Т.е. чтобы записи шли в порядке:
- Запись 1
- Запсиь 3
- Запись 2
- Запись 4 | |
|
|
|
|