sql >> Databasteknik >  >> RDS >> Oracle

Ta bort duplicerade underträd från CONNECT-BY-frågan i Oracle

Rotnoden i finit hierarki måste alltid vara känd. Enligt definitionen:http://en.wikipedia .org/wiki/Tree_structure rotnoden är en nod som inte har några föräldrar. För att kontrollera om en given nod är en rotnod, ta "parent_id" och kontrollera i tabellen om det finns en post med detta id. Frågan kan se ut så här:

SELECT id,parent_id,
  CONNECT_BY_ISLEAF leaf,
  LEVEL,
  SYS_CONNECT_BY_PATH(id, '/') Path,
  SYS_CONNECT_BY_PATH(parent_id, '/') Parent_Path
FROM tree_hierarchy th
WHERE CONNECT_BY_ISLEAF<>0
  CONNECT BY PRIOR id = PARENT_id
START WITH not exists (
      select 1 from tree_hierarchy th1 
      where th1.id = th.parent_id
  )
ORDER SIBLINGS BY ID;


  1. Hur CAST() fungerar i SQL Server

  2. MySQL-syntaxfel. Kan inte lösa det

  3. Lagra filer i SQL-databas med FILESTREAM – Del 2

  4. Infoga blob i Oracle-databasen med C#