Рекурсивный запрос, возможно ли?

kiruxa_dnp

Новичок
Рекурсивный запрос, возможно ли?

Доброго дня

не пиннайте плиз.... В СКЛ я начинающий.... понимаю что вопрос детский, но...

у меня есть такая структура базы


id parent_id description active
1 0 val1 1
2 1 val2 1
3 1 val3 1
4 2 val4 1
5 4 val3 1

вот мне надо зная ИД родителя выбрать все его дочерние элементы....
подскажите плиз как это сделать... буду благодарен
 
рекурсивный запрос нельзя сделать,а код на пхп, который рекурсивно получает детей - вполне.
 
рекурсивный запрос нельзя сделать,а код на пхп, который рекурсивно получает детей - вполне.
можно написать хранимую процедуру, которая выдаст всех детей. 5й мускуль установлен почти везде.
 
Хотелось бы одним запросом все потянуть... поскольку функцией будет очень ресурсоемко....

может какието вложеные запросы ?

я видел в стандартном SQL есть WITH который решает это дело

http://msdn2.microsoft.com/ru-ru/library/ms186243.aspx
типа вот этого
 
не будет ресурсоемко. сколько у тебя детей? тысяча?
 
у меня PHP version 5.2.3
MySQL version 4.1.22-standard
это то что дают клиенты

-~{}~ 17.12.07 16:13:

да порядки такие
могут быть вложения до 2000 ... и делать такую гору запросов не особо правильно
 
тогда стоит подумать о другой структуре таблицы.
если уровней вложенности может быть до 2000.
 
kiruxa_dnp
А надо ли тебе знать всех детей и внуков сразу?

Попробуй обойтись 2 типами запросов:
1. Выбрать всех детей (без внуков).
2. Выбрать всех (можно потом красиво отсортировать).

Еще вариант - ввести индекс: папа пусть "10", сын - "101", дочь - "102", внук - "1021".

Совместив с первым солюшеном можно сортировать прямо в запросе и без извращений.
 
по поводу структуры
есть какие-то альтернативы?

помоему структура самая простая что может быть...
ид, ид_родителя, название...

-~{}~ 17.12.07 16:26:

Автор оригинала: Pigmeich
А надо ли тебе знать всех детей и внуков сразу?.
- да это надо -

именно что вся проблема в этом, что надо вятянуть всю ветку целиком.
 
разумеется - самая простая структура.
Но задача-то у тебя не самая простая?

в mysql нет with и нет connect by
 
если не будет варианта, то будет куча запросов ... :(

хочеться же по человечески сделать...
 
Вообще, имхо, человека нада сначала направить покурить про деревья и методы их реализации в DB. Обсосанная тема же.
 
Сверху