Добрый день. Возможно заголовок написан криво ) (Явное влияние утра понедельника после ночи работы).
Ситуация следующая. Практикуюсь в работе с OTRS и есть идея связать все заявки с сервером телефонии. Было решено написать модуль телефонной книги, но вот запнулся на, вроде бы, маленькой мелочи: Формирования списка классификатора в виде дерева. Понимаю что вопрос скорее все нужно будет решать через рекурсию. С perl почти не знаком, так что не пинайте сильно.
Есть следующая структура базы:
<TableCreate Name="phonebook_menu">
<Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/>
<Column Name="id_parent" Required="false" Type="BIGINT"/>
<Column Name="name" Required="true" Size="250" Type="VARCHAR"/>
<Column Name="created" Required="true" Type="DATE"/>
<Column Name="created_by" Required="true" Type="INTEGER"/>
<Column Name="changed" Required="true" Type="DATE"/>
<Column Name="changed_by" Required="true" Type="INTEGER"/>
<Column Name="valid_id" Required="true" Type="SMALLINT"/>
<Unique Name="phonebook_menu_id">
<UniqueColumn Name="id"/>
</Unique>
<Index Name="phonebook_menu_id">
<IndexColumn Name="id"/>
</Index>
<ForeignKey ForeignTable="valid">
<Reference Local="valid_id" Foreign="id"/>
</ForeignKey>
<ForeignKey ForeignTable="users">
<Reference Local="created_by" Foreign="id"/>
<Reference Local="changed_by" Foreign="id"/>
</ForeignKey>
</TableCreate>
- id - всем понятно что это уникальный номер классификатора;
- id_parent - в случае если это классификатор (категория) верхнего уровня то он будет = 0, либо если это вложенный классификатор то id соответсвующий другому классификатору, name - имя классификатора;
- valid_id - скрыт классификатор или нет (0/1);
- прочее никак не влияет на задачу;
Требуется написать sql запрос для mysql или postgresql и код который будет обрабатывать результаты запроса и сформирует hashes of hashes.