sql >> Base de Datos >  >> RDS >> Oracle

Conectar por cláusula para obtener la parte superior de la jerarquía

Oracle tiene un LEVEL pseudocolumna que puedes usar:

SELECT
  myTable.ID,
  myTable.ParentID
FROM myTable
WHERE LEVEL = 1
CONNECT BY PRIOR myTable.ID = myTable.ParentID

Para encontrar un valor de nivel superior (raíz) de cualquier nivel, preceda el nombre de la columna con 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