Това
уебсайтът има наистина хубав преглед на различните методи за съхранение на йерархични данни в mysql и PHP. За да отговорите на въпроса си, най-лесният начин е да използвате php и рекурсия. Има и други методи, които бихте могли да използвате, като например modified preorder transversal
, които не изискват множество заявки към база данни. Но този метод може да бъде по-сложен за прилагане, когато се работи с много вмъквания и актуализации.
Друг наистина страхотен метод и моят личен фаворит е така наречената "таблица за затваряне" / "релация на съседство", спомената в Кой е най-ефективният/елегантен начин за анализиране на плоска таблица в дърво?
Що се отнася до вашия коментар, вие основно трябва да направите цикъл или рекурсивна функция, която избира родителя на chicago, след това родителя на родителя и така нататък.
$stack = array();
$parent = 3;
while($parent != 0){
$data = (put your mysql to get the row with parentID = $parent)
$parent = data['parentID'];
$stack[] = $data;
}
$stack = array_reverse($stack);
След това стекът ще съдържа родителите на Чикаго (т.е. местоположение, САЩ)