Oracle
 sql >> база данни >  >> RDS >> Oracle

oracle свързване от множество родители

Е, проблемът ви изглежда е, че използвате ненормализиран дизайн на таблица. Ако даден ID винаги има един и същ ParentID , тази връзка не трябва да се посочва отделно във всички тези редове.

По-добър дизайн би бил да има една таблица, показваща връзките родител-дете, с ID като първичен ключ и втора таблица, показваща съпоставянията на ID към ObjectID , където предполагам, че двете колони заедно ще съставят първичния ключ. След това ще приложите вашата йерархична заявка към първата таблица и ще обедините резултатите от нея към другата таблица, за да получите съответните обекти за всеки ред.

Можете да емулирате това с текущата си структура на таблицата ...

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. Създайте таблица с динамични имена с подготвен израз в java

  2. Масово вмъкване на Oracle с помощта на SQL Developer

  3. стартирайте скрипта oracle sql от java

  4. Предупреждение:ocifetch() [function.ocifetch]:ORA-24374:дефинирайте не е направено преди извличане или изпълнете и извлечете

  5. Каква структура от данни да използвам, за да сортирам тези данни в PL/SQL?