sql >> Databáze >  >> RDS >> Oracle

Připojte se klauzulí, abyste se dostali na vrchol hierarchie

Oracle má LEVEL pseudosloupec které můžete použít:

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

Chcete-li najít hodnotu nejvyšší úrovně (kořen) z jakékoli úrovně, před název sloupce uveďte CONNECT_BY_ROOT operátor:

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


  1. Problémy se seskupováním

  2. Exkluzivní zámek tabulky (čtení) na Oracle 10g?

  3. Co je špatného na tomto kódu SQL? (VBA MS Access)

  4. Jak seskupit podle těchto dat oddělených čárkami