У меня есть отношение элементов, хранящихся в таблице MySQL следующей структуры:
+---------+------------+
| item_id | parent_id |
+---------+------------+
Элементы хранятся так:
+-----------+------------+
| item_id | name |
+-----------+------------+
Мне нужно построить дерево из данного детского симиллара к этому:
- A
-- B
--- D
---- E
----- F
------ X
---- G
----- H
------ I
------- X
- J
-- K
--- L
---- X
----- M
------ X
В настоящее время я показываю только отношения «X — это M», «X — это я» и «X — это F». Я не узнал, как показать все дерево от X до. Каждый элемент может иметь более одного родителя, поэтому всегда есть несколько способов «как добраться до Х».
Я использую MySQL с 50 000 элементов и около 170 000 записей в таблице отношений. Единственный способ, о котором я думаю, — это найти все возможные пути для каждого элемента и его потомка и сохранить их в кеше.
Буду признателен за любую помощь!
Задача ещё не решена.
Других решений пока нет …