Как построить дерево / вложенный массив «дочерний родительский элемент» из базы данных?

 ТАБЛИЦА `народ`
 + ---- + ------------ + ------- +
 |  sn |  имя |  верхняя |
 + ---- + ------------ + ------- +
 |  1 |  Климент |  0 |
 |  2 |  Жан |  1 |
 |  3 |  Энни |  1 |
 |  4 |  Юань |  2 |
 |  5 |  Мей |  2 |
 |  6 |  Синий |  3 |
 |  7 |  Ян |  5 |
 |  8 |  Лоринда |  0 |
 + ---- + ------------ + ------- +

Структура похожа:

 милостивый
     джинсовый
         юань
         Mei
             Ян
     Энни   
         синий
 Lorinda

upper колонны говорит о себе.

Проблема в следующем: как я могу получить вложенный / многомерный массив из MySQL? Я думал, что могу использовать циклы для извлечения, но мне не удалось автоматизировать выборку всех понижений. Массив может быть таким:

 массив
 (
     [1] => Массив
     (
         [Сам] => Климент
         [2] => Массив
         (
             [Сам] => Jean
             [4] => Массив
             (
                 [Сам] => Юань
             )
             [5] => Массив
             (
                 [Сам] => Мая
                 [7] => Массив
                 (
                     [Сам] => Ян
                 )
             )
         )
         [3] => Массив
         (
             [Сам] => Анни
             [6] => Массив
             (
                 [Само] => Синий
             )
         )
     )
     [8] => Массив
     (
         [Само] => Lorinda
     )
 )

Поскольку мы не знаем, сколько у него «верхних» людей, решение должно быть автоматизированной функцией, которая построит полный массив, а не только для трех или четырех измерений. Другими словами, функция должна находиться в глубине всего нижнего человека от высшего человека.