Ну как, как, просто очень, JavaScript-ом например, я делал такую штуку, вывод дерева сотрудников, с возможностями разворота, на странице... двумерным массивом делается, или двумя одномерными, дело вкуса, только вот массивы все равно придется грузить. Если организация с мало меняющимся штатом, то просто можно формирование массивов сделать дома, а на сервак уже загрузить готовые файлы и никакой динамики не будет, и все красиво. Там, где я это делал, так и было примерно реализовано. Т.е. штатное расписание обновляется раз в неделю, запускаем скрипт, который из штатного расписания делает массивы на JS, загружаем JS как статику на сервак и радуемся. Можете, кстати, попробовать такой скрипт написать, ну и на сервак загрузить и на нем запустить, вдруг корректно отработает. И еще одна мысль мне тут пришла, если уж у Вас все в базе уже есть, само то сделать AJAX-ом, т.е. грузить сначала например, названия департаментов, когда юзер разворачивает депортамент, подгружаем список отделов, потом список групп, потом список сотрудников - летать просто будет, ну и сеть грузить совсем немного... а то уж Ваши почти мегабайт наводят на странные подозрения, а нужно ли пользователю сразу столько информации.