sql >> Databáze >  >> RDS >> Mysql

Jak mohu rekurzivně získat rodičovské ID řádků v této tabulce MySQL?

Toto web má opravdu pěkný přehled o různých metodách ukládání hierarchických dat v mysql a PHP. K zodpovězení vaší otázky je nejjednodušší použít php a rekurzi. Můžete použít i další metody, jako je modified preorder transversal , které nevyžadují více databázových dotazů. Implementace této metody však může být složitější, když se jedná o velké množství vložení a aktualizací.

Další opravdu skvělá metoda a mým osobním oblíbeným je takzvaná "uzavřená tabulka" / "vztah sousedství" zmíněný v Jaký je nejúčinnější/nejelegantnější způsob, jak analyzovat plochý stůl do stromu?

Pokud jde o váš komentář, musíte v podstatě vytvořit smyčku nebo rekurzivní funkci, která vybere rodiče chicaga, potom rodiče rodiče a tak dále.

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

Zásobník pak bude obsahovat rodiče Chicaga (tj. umístění, USA)



  1. Příklady ASCII() – MySQL

  2. Provádění více příkazů pomocí Postgresql přes SQLAlchemy neuchová změny

  3. Obsahuje MS SQL Server hranice rozsahu?

  4. Jaký je maximální počet znaků, které nvarchar(MAX) pojme?