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

Oracle CONNECT BY rekurzivní dotaz z potomka na nadřazený, včetně konečného rodiče, který sám odkazuje

Tento výsledek jsem získal pomocí WITH doložka.

WITH REC_TABLE ( ID, PARENT_ID)
AS
(
    --Start WITH 
    SELECT ID, PARENT_ID
    FROM table
    WHERE ID='C'

    UNION ALL
    --Recursive Block
    SELECT T.ID, T.PARENT_ID
    FROM table T 
    JOIN REC_TABLE R
    ON R.PARENT_ID=T.ID
    AND R.PARENT_ID!=R.ID   --NoCycle rule
)
SELECT *
FROM REC_TABLE;

A zdá se, že to tak také funguje.

select id, parent_id
from T
START WITH id = 'C'
CONNECT BY id = PRIOR parent_id and parent_id!= prior id;
--                                  ^^^^^^^^^^^^^^^^^^^^
--                                      break cycles

Doufám, že to pomůže.




  1. Jak nakonfigurovat SQL Server pro správu relací ASP.NET

  2. Vyberte odlišné hodnoty na základě sloupce s maximální hodnotou data z druhého sloupce

  3. Pokračování Pro s Mysql v Dockeru

  4. Aktualizace od týmu Microsoft Access (červen 2017)