Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да получа рекурсивно родителския идентификатор на редовете в тази MySQL таблица?

Това уебсайтът има наистина хубав преглед на различните методи за съхранение на йерархични данни в 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);

След това стекът ще съдържа родителите на Чикаго (т.е. местоположение, САЩ)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Как да вмъкнете в таблица, която има връзка много към много

  2. Как да направите заявка към тази MySQL таблица по най-ефективния начин?

  3. Изберете mysql заявка между дата?

  4. Какво е по-добре в MYSQL count(*) или count(1)?

  5. Групирайте mysql заявката на интервали от 15 минути