Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Buscando lista vinculada no banco de dados MySQL


Algumas marcas de banco de dados (por exemplo, Oracle, Microsoft SQL Server) suportam sintaxe SQL extra para executar "consultas recursivas", mas o MySQL não suporta nenhuma dessas soluções.

O problema que você está descrevendo é o mesmo que representar uma estrutura de árvore em um banco de dados SQL. Você só tem uma árvore longa e magra.

Existem várias soluções para armazenar e buscar esse tipo de estrutura de dados de um RDBMS. Veja algumas das perguntas a seguir:

Como você menciona que gostaria de limitar a "profundidade" retornada pela consulta, você pode conseguir isso ao consultar a lista desta forma:
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);

Ele funcionará como melado, e o resultado voltará em uma linha (por lista vinculada), mas você obterá o resultado.