Pytanie będzie dotyczyło dwóch zapytań mających zwrócić teoretycznie ( ͡° ͜ʖ ͡°) taki sam wynik. Chodzi o to, które będzie bardziej wydajne, czyli które szybciej się wykona.
Załóżmy, że mamy zapytanie A, w skład którego wchodzi podzapytanie B oraz to zapytanie A czerpie jeszcze dane z jakiejś tabeli, nazwijmy ją C
Wersja 1:
Po klauzuli FROM zapytania głównego (A) wstawiamy podzapytanie B, które następnie łączymy JOINEM z tabelą C na podstawie jakiś identyfikator id
Załóżmy, że mamy zapytanie A, w skład którego wchodzi podzapytanie B oraz to zapytanie A czerpie jeszcze dane z jakiejś tabeli, nazwijmy ją C
Wersja 1:
Po klauzuli FROM zapytania głównego (A) wstawiamy podzapytanie B, które następnie łączymy JOINEM z tabelą C na podstawie jakiś identyfikator id

















Mamy tabelę z jedną hierarchiczną kolumną na zasadzie rodzic - dziecko z referencją do tej samej tabeli (czyli drzewko). I teraz pytanie: Jak napisać zapytanie które zaznacza rekord, który jest dzieckiem i dołącza do niego kolumny z jego roota(nie mylić z rodzicem). Podejrzewam, że jakaś kombinacja z joinem i connect by prior, ale głowa mi paruje i nie wiem.
#sql #oracle
SELECT PBF.ID CHILD_ID, PBF.ZLACZENIE_ID, PBF_PARENT.ID, CONNECT_BY_ROOT PBF.ID ROOT_IDFROM TABELA PBF
LEFT OUTER JOIN TABELA PBF_PARENT ON
PBF_PARENT.ID
Powinno być:
START WITH PBF.ZLACZENIEID IS NULL CONNECT BY PRIOR PBF.ID = PBF.ZLACZENIEID
To psuło, że nie było tego warunku na początku.