Я знаю, что есть простой способ сделать это, но мои способности к рекурсии не практичны. Учитывая таблицу базы данных, которая имеет три поля:Рекурсивные вызовы в базу данных в perl
id
label
child_id
я должен быть в состоянии собрать рекурсивную функцию, которая будет давать такой вывод:
child (input of program)
parent1
parent2
grandparent1
great-grandparent1
grandparent2
grandparent3
parent3
grandparent4
grandparent5
Я знаю, что это должно быть легко, но я могу «Я хочу, чтобы я прошел через ментальную гимнастику, чтобы заставить ее работать. Кроме того, это хорошая вещь? Похоже, я мог бы в итоге оставить несколько соединений с базами данных.
Я думаю, что это часть, которая затрудняет для меня. Я начинаю с child_id и работаю. И у ребенка может быть много родителей. Таким образом, результатом будет дочерний идентификатор в «корне» дерева, а затем это родители и дедушки и бабушки для каждой ветки. Чем больше я думаю об этом, это просто традиционная формула «один родитель, многие бабушки и дедушки», за исключением семантики. Я просто мог подумать об этом.
таблица будет выглядеть примерно так:
table parents
id child_id label
1 NULL child
2 1 parent1
3 1 parent2
4 1 parent3
5 3 grandparent1
6 3 grandparent2
7 3 grandparent3
8 5 great-grandparent1
9 4 grandparent4
10 4 grandparent5
По каким критериям вы можете вложить свой выход? – Zaid
Знаете, я оставил важную часть (и, я думаю, ту часть, которая делает это запутанным для меня). Я начинаю с child_id и работаю. И у ребенка может быть много родителей. Таким образом, результатом будет дочерний идентификатор в «корне» дерева, а затем это родители и дедушки и бабушки для каждой ветки. –
Насколько велика ваша таблица? Это может быть намного проще загрузить в структуру данных и сделать это в памяти и вызвать базу данных. Здесь проблема нехватки памяти? – Mike