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:
- "Jaký je nejúčinnější/nejelegantnější způsob, jak analyzovat plochý stůl do stromu? " ."
- "Je to možné vytvořit rekurzivní SQL dotaz? " ."
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.