Подскажите, пожалуйста, возможно ли реализовать обновление одним запросом или как правильно оптимизировать код. Есть таблица | id | name | parent | power | exp | leftorright | islast | | 1 | Boss | 0 | 100 | 0 | l | 0 | | 2 | Петров | 1 | 100 | 0 | l | 0 | | 3 | Иванов | 1 | 200 | 0 | r | 1 | | 4 | Сидор | 2 | 150 | 0 | l | 1 | Как бы у босса 2 листа -- левый Петров и Правый Иванов. И у Петрова есть один Сидор Как правильно, проходя с самых нижних к единственному верхнему обновить данные по типу Петров exp = ( Сидор pow + Сидор exp ) Boss exp = ( Петров pow + Петров exp ) + ( Иванов pow + Иванов exp) Записей много и если проходиться PHP: do { взять каждый last = 1 и идти вверх, складывая по правилу выше } while ( parent != 0 ); то получится долго, т.к. записей не одна сотня тысяч... Плюс надо учитывать, чтобы не сложить одного два раза (например, один раз считая от его правой ветки, второй раз от левой). Что посоветуете?
http://citforum.ru/database/articles/tree.shtml http://www.sqlbooks.ru/readarticle.aspx ... =sql200509 и тут что-то обсуждали на тему nested set