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

Como posso obter ids ancestrais para profundidade de recursão arbitrária em uma consulta SQL?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

supondo que sua tabela seja chamada de T. não testada. não tenho certeza do que acontece se d não tiver três pais, provavelmente você não entende nada, pode tentar LEFT JOIN para esses casos para obter valores NULL para os ótimos pais. Além disso, o último JOIN não é realmente necessário porque você pode simplesmente selecionar b.parent_id em vez de a.id, mas, você sabe, apenas para levar para casa o padrão;)