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

Odstranění duplicitních podstromů z dotazu CONNECT-BY v oracle

Kořenový uzel v konečné hierarchii musí být vždy znám. Podle definice:http://en.wikipedia .org/wiki/Tree_structure kořenový uzel je uzel, který nemá žádné rodiče. Chcete-li zkontrolovat, zda je daný uzel kořenovým uzlem, vezměte "parent_id" a zkontrolujte v tabulce, zda existuje záznam s tímto id. Dotaz může vypadat takto:

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. Jak odeslat libovolné parametry do triggeru Oracle?

  2. Chyba nedefinované metody `to_key' pro [xxx] :Array při pokusu o použití dat pole na Active Admin table_for (Rails, Postgresql, postgres_ext gem)

  3. Doporučené postupy optimalizace databáze MySQL

  4. Jakákoli jiná řešení pro SQL Sada médií má 2 rodiny médií, ale pouze 1 je k dispozici. Musí být poskytnuti všichni členové. chyba?