2016-08-24 2 views
0

я хочу показать некоторый результат, используя рекурсию первый здесь моя структураКак отобразить все результаты в PHP MySQL в рекурсивной функции

contactid  name  reportsto 
244797   ankit   9876 
438    Mukti   244797 
445    Moorthy  244797 
446    P K Roy  244797 
448    Suruchi  438 
542    Lalit Kumar 438 
543    Balkrishan 542 

стол, когда я print_r ($ printres), то я получаю только идентификатор которого сообщается до 244797, пожалуйста, проверьте мой код и оцените мою проблему.

+1

В отличии от некоторой другой СУБД, MySQL не поддерживает рекурсивные функции-что делает его малопригодным для этой модели «список смежности» хранения иерархических данных (вы должны явно автообъединения для каждого уровня глубины вы желаете) ; подумайте над тем, чтобы перепроектировать вашу схему для использования моделей «вложенных наборов» или «транзитивных замыканий», о которых вы можете узнать больше из [@Bill Karwin] (https://stackoverflow.com/users/20860/bill-karwin) ' превосходная презентация [Модели для иерархических данных в SQL и PHP] (https://youtu.be/wuH5OoPC3hA). – eggyal

ответ

0

Не идеальный пример, но я надеюсь, что это поможет вам начать. Это будет выглядеть примерно так:

function recursive($reportsTo){ 
    //make some logic that if contactid == reportsto does something (make table or layout) 
    recursive($contactId) 
} 

recursive(0) 
0

Надеюсь, этот запрос поможет. Вы попробуете это.

select contactid,name,'' level2,'' as level3, 0 ord,0 ord1,0 ord2 from tablename where reportsto=0 union select LW1.contactid,'' as name,LW.name level2,'' as level3,1 ord,LW.mid ord1,0 ord2 from tablename LW, tablename LW1 where LW.reportsto=LW1.contactid and LW.reportsto in(select contactid from tablename where reportsto=0) union select LW2.contactid,'' as name,'' as level2,LW.name as level3,1 ord,LW.reportsto ord1,1 ord2 from tablename LW,tablename tablename LW2 where LW.reportsto=LW1.contactid and LW1.reportsto=LW2.contactid and LW.reportsto in(select reportsto from iman_module where reportsto<>0) order by contactid,ord,ord1,ord2 
Смежные вопросы