Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Conecte-se por cláusula para obter o topo da hierarquia


A Oracle tem um LEVEL pseudocoluna que você pode usar:
SELECT
  myTable.ID,
  myTable.ParentID
FROM myTable
WHERE LEVEL = 1
CONNECT BY PRIOR myTable.ID = myTable.ParentID

Para encontrar um valor de nível superior (raiz) de qualquer nível, preceda o nome da coluna com o CONNECT_BY_ROOT operador:
SELECT
  myTable.ID,
  myTable.ParentID,
  CONNECT_BY_ROOT myTable.ID AS "Top Level ID"
FROM myTable
CONNECT BY PRIOR myTable.ID = myTable.ParentID