sql >> Database >  >> RDS >> Mysql

Hoe kan ik recursief de bovenliggende ID van rijen in deze MySQL-tabel verkrijgen?

Dit website heeft een heel mooi overzicht van de verschillende methoden voor het opslaan van hiërarchische gegevens in mysql en PHP. Om uw vraag te beantwoorden, is de eenvoudigste manier om php en recursie te gebruiken. Er zijn andere methoden die u zou kunnen gebruiken, zoals de modified preorder transversal , waarvoor geen meerdere databasequery's nodig zijn. Maar deze methode kan ingewikkelder zijn om te implementeren als het gaat om veel invoegingen en updates.

Een andere echt coole methode en mijn persoonlijke favoriet is de zogenaamde "afsluittabel" / "aangrenzende relatie" genoemd in Wat is de meest efficiënte/elegante manier om een ​​platte tafel in een boom te ontleden?

Met betrekking tot je opmerking moet je in feite een lus of een recursieve functie maken die de ouder van chicago selecteert, dan de ouder van de ouder, enzovoort.

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

Stack bevat dan de ouders van Chicago, (dwz locatie, VS)



  1. Verbinding maken vanaf de Windows-opdrachtprompt naar de mysql-opdrachtregel

  2. Kan niet decoderen met pgcrypto van AES-256-CBC, maar AES-128-CBC is OK

  3. Een OBJECT_NAME() ophalen uit een andere database in SQL Server

  4. Hoe zet ik deze complexe SQL om in een Django-modelquery?