Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle łączy wielu rodziców

Twój problem wydaje się polegać na tym, że używasz nieznormalizowanego projektu tabeli. Jeśli podany ID zawsze ma ten sam ParentID , ta relacja nie powinna być wskazywana osobno we wszystkich tych wierszach.

Lepszym projektem byłoby posiadanie pojedynczej tabeli pokazującej relacje rodzic-dziecko, z ID jako klucz podstawowy, a druga tabela pokazująca mapowania ID na ObjectID , gdzie zakładam, że obie kolumny razem stanowią klucz podstawowy. Następnie zastosujesz swoje hierarchiczne zapytanie do pierwszej tabeli i połączysz wyniki tego z drugą tabelą, aby uzyskać odpowiednie obiekty dla każdego wiersza.

Możesz to emulować z obecną strukturą tabeli ...

with parent_child as (select distinct id, parent_id from table),
     tree as (select id, parent_id from parent_child
               start with parent_id = 0
               connect by prior id = parent_id )
select id, table.parent_id, table.object_id
  from tree join table using (id)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć strefę DMZ dla EBS R12?

  2. Wstawianie tablicy byte[] jako obiektu BLOB w bazie danych Oracle Pobieranie ORA-01460:zażądano niewdrożonej lub nieuzasadnionej konwersji

  3. Jak wywołać funkcję lub procedurę składowaną Oracle przy użyciu frameworka trwałości wiosennej?

  4. Uciekający znak ampersand w ciągu SQL

  5. Wywołanie procedury składowanej z java dla Oracle typu TABLE