LINUX.ORG.RU

Разбор многоуровневого каталога

 


0

1

Есть база в MySQL вида

id | par | name

Где
id - уникальный номер
par - id родителя из этой же базы
ну а про name понятно

всё это имеет такую структуру

Корень (id = 0)
* Раздел 1 (par = 0)
* Раздел 2 (par = 0)
** Раздел 3(par = 2)
** Раздел 4(par = 2)
***Раздел 5(par = 4)
*Раздел 6 (par = 0)
**Раздел7 (par = 6)

Вопрос: Как получить все разделы 2 порядка тоесть 3 4 7 в mysql запросе?

★★★

ИМХО, даже если в каком-нибудь oracle или postgre есть connect by, делать так можно только для очень маленьких таблиц в очень ненагруженных проектах. Храни в таблице уровень вложенности.

SOmni ★★ ()

Через костыли конечно же. :) Не в курсе как в mysql синтаксис алиасов - но как то так

select t1.id, t1.par, t1.name
from sometable as t1
where t1.par>0 and 
exists (
 select t2.id from sometable as t2 where t2.id=t1.par
 and not exists (select t3.id from sometable as t3 where t3.id=t2.par)
)

anonymous ()

Ввести параметр level и не мучаться.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.