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

Oracle propojit více rodiči

Zdá se, že váš problém spočívá v tom, že používáte nenormalizovaný návrh tabulky. Pokud je dané ID má vždy stejné ParentID , tento vztah by neměl být uveden samostatně ve všech těchto řádcích.

Lepším návrhem by bylo mít jedinou tabulku zobrazující vztahy nadřazeného potomka s ID jako primární klíč a druhou tabulku zobrazující mapování ID na ObjectID , kde předpokládám, že oba sloupce dohromady budou obsahovat primární klíč. Potom byste použili svůj hierarchický dotaz na první tabulku a spojili výsledky této tabulky s druhou tabulkou, abyste získali relevantní objekty pro každý řádek.

Můžete to emulovat s vaší aktuální strukturou tabulky ...

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. Relační databáze

  2. jak umožnit přihlášeným uživatelům AKTUALIZOVAT / UPRAVOVAT nastavení/informace profilu

  3. Jak změnit duplicitní řádky na jedinečné hodnoty v mysql?

  4. Yii2 :Převod nezpracovaného dotazu na ActiveRecord