Oracle
 sql >> Base de données >  >> RDS >> Oracle

Connectez-vous par clause pour obtenir le sommet de la hiérarchie

Oracle a un LEVEL pseudo-colonne que vous pouvez utiliser :

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

Pour rechercher une valeur de niveau supérieur (racine) à partir de n'importe quel niveau, faites précéder le nom de la colonne du CONNECT_BY_ROOT opérateur :

SELECT
  myTable.ID,
  myTable.ParentID,
  CONNECT_BY_ROOT myTable.ID AS "Top Level ID"
FROM myTable
CONNECT BY PRIOR myTable.ID = myTable.ParentID