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

Načítání propojeného seznamu v databázi MySQL

Některé značky databází (např. Oracle, Microsoft SQL Server) podporují extra syntaxi SQL pro spouštění „rekurzivních dotazů“, ale MySQL žádné takové řešení nepodporuje.

Problém, který popisujete, je stejný jako při reprezentaci stromové struktury v SQL databázi. Máte jen dlouhý, hubený strom.

Existuje několik řešení pro ukládání a načítání tohoto druhu datové struktury z RDBMS. Podívejte se na některé z následujících otázek:

Protože jste zmínili, že byste chtěli omezit "hloubku" vrácenou dotazem, můžete toho dosáhnout při dotazování na seznam takto:

SELECT * FROM mytable t1
 LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
 LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
 LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
 LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
 LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
 LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
 LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
 LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
 LEFT JOIN mytable t10 ON (t9.next_id = t10.id);

Bude fungovat jako melasa a výsledek se vrátí na jeden řádek (na propojený seznam), ale výsledek dostanete.



  1. Vytvoření tabulky čísel v MySQL

  2. Vysoké využití místa z crfclust.bdb

  3. Generování náhodného a jedinečného 8znakového řetězce pomocí MySQL

  4. Připojte se k databázi MSSQL pomocí Flask-SQLAlchemy