yhteenveto: tässä opetusohjelmassa opit PostgreSQL rekursiivisesta kyselystä käyttämällä rekursiivisia yleisiä taulukkolausekkeita tai CTEs: iä.
Johdanto PostgreSQL: n rekursiiviseen kyselyyn
PostgreSQL tarjoaa WITH
lausekkeen, jonka avulla voi rakentaa apulauseita kyselyssä käytettäväksi.
näitä lausekkeita kutsutaan usein yleisiksi taulukkolausekkeiksi tai CTEs: ksi. CTE: t ovat kuin väliaikaisia taulukoita, jotka ovat olemassa vain kyselyn suorittamisen aikana.
rekursiivinen kysely on kysely, joka viittaa rekursiiviseen CTE: hen. Rekursiiviset kyselyt ovat hyödyllisiä monissa tilanteissa, kuten hierarkkisten tietojen, kuten organisaatiorakenteen, materiaaliluettelon jne.kyselyssä.
seuraava havainnollistaa rekursiivisen CTE: n syntaksia:
Code language: SQL (Structured Query Language) (sql)
rekursiivisessa CTE: ssä on kolme elementtiä:
- Ei-rekursiivinen termi: EI-rekursiivinen termi on CTE-kyselyn määritelmä, joka muodostaa CTE-rakenteen perustulosjoukon.
- rekursiivinen termi: rekursiivinen termi on yksi tai useampi CTE-kyselyn määritelmä, joka on liitetty ei-rekursiiviseen termiin käyttäen unionia tai
UNION ALL
operaattoria. Rekursiivinen termi viittaa itse CTE-nimeen. - Päättymistarkistus: rekursio pysähtyy, kun edellisestä iteraatiosta Ei palauteta rivejä.
PostgreSQL suorittaa rekursiivisen CTE: n seuraavassa järjestyksessä:
- Suorita ei-rekursiivinen termi luodaksesi perustulosjoukon (R0).
- Suorita rekursiivinen termi ri tulona palauttaaksesi tulosjoukon Ri+1 tulosteeksi.
- toista vaihe 2, kunnes tyhjä sarja palaa. (päättymistarkistus)
- Palauta lopullinen tulosjoukko, joka on liitto tai
UNION ALL
tulosjoukosta R0, R1, … RN
PostgreSQL rekursiivinen kysely esimerkki
luomme uuden taulukon osoittaaksemme PostgreSQL-rekursiivisen kyselyn.
Code language: SQL (Structured Query Language) (sql)
employees
taulukossa on kolme saraketta: employee_id
, manager_id
ja full_name
. Sarake manager_id
määrittää työntekijän esimiestunnuksen.
seuraava lausuma lisää otostiedot employees
– taulukkoon.
Code language: PHP (php)
seuraava kysely palauttaa kaikki esimiehen alaiset tunnuksella 2.
Code language: SQL (Structured Query Language) (sql)
miten se toimii:
- rekursiivinen CTE, subsides, määrittelee yhden ei-rekursiivisen termin ja yhden rekursiivisen termin.
- ei-rekursiivinen termi palauttaa perustulosjoukon R0, joka on työntekijä tunnuksella 2.
Code language: SQL (Structured Query Language) (sql)
rekursiivinen termi palauttaa työntekijän suoran alaisen(t) id: N 2. Tämä on seurausta työntekijöiden pöydän ja alaisten CTE: n yhdistymisestä. Rekursiivisen termin ensimmäinen iteraatio palauttaa seuraavan tulosjoukon:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL toteuttaa rekursiivisen termin toistuvasti. Rekursiivisen jäsenen toinen iteraatio käyttää tuloarvona vaiheen yläpuolella olevaa tulosjoukkoa ja palauttaa tämän tulosjoukon:
Code language: SQL (Structured Query Language) (sql)
kolmas iteraatio palauttaa tyhjän tulosjoukon, koska työntekijälle ei raportoida tunnuksilla 16, 17, 18, 19 ja 20.
PostgreSQL palauttaa lopullisen tulosjoukon, joka on ei-rekursiivisten ja rekursiivisten termien synnyttämien kaikkien tulosjoukkojen liitto ensimmäisessä ja toisessa iteraatiossa.
tässä opetusohjelmassa olet oppinut käyttämään rekursiivista CTEs: ää muodostaaksesi PostgreSQL: n rekursiiviset kyselyt.
- oliko tästä opetuksesta apua ?
- YesNo