Oracle
 sql >> Database >  >> RDS >> Oracle

Connetti per clausola per ottenere il vertice della gerarchia

Oracle ha un LEVEL pseudocolonna che puoi usare:

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

Per trovare un valore di primo livello (radice) da qualsiasi livello, fai precedere il nome della colonna con il CONNECT_BY_ROOT operatore:

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