Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę rekursywnie uzyskać identyfikator rodzica wierszy w tej tabeli MySQL?

To strona ma naprawdę fajny przegląd różnych metod przechowywania danych hierarchicznych w mysql i PHP. Aby odpowiedzieć na Twoje pytanie, najłatwiej jest użyć php i rekursji. Istnieją inne metody, których możesz użyć, takie jak modified preorder transversal , które nie wymagają wielu zapytań do bazy danych. Ale ta metoda może być bardziej złożona do wdrożenia, gdy mamy do czynienia z wieloma wstawkami i aktualizacjami.

Inną naprawdę fajną metodą i moją ulubioną jest tak zwana „tabela zamykania” / „relacja sąsiedztwa” wspomniana w Jaki jest najbardziej wydajny/elegancki sposób przetworzenia płaskiego stołu na drzewo?

Jeśli chodzi o Twój komentarz, zasadniczo musisz utworzyć pętlę lub funkcję rekurencyjną, która wybiera rodzica Chicago, a następnie rodzica rodzica i tak dalej.

$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);

Stos będzie wtedy zawierał rodziców Chicago (tj. lokalizacja, USA)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pierwsze kroki z GearHost do tworzenia baz danych MySQL

  2. while($row =mysql_fetch_assoc($result)) - Jak foreach $row?

  3. Połącz się ze źródłem danych MySQL w PHPStorm

  4. JSON_MERGE_PATCH() vs JSON_MERGE_PRESERVE() w MySQL:jaka jest różnica?

  5. Konfiguracja CentOs PHP i MySql