Opi PostgreSQL rekursiivinen kysely esimerkillä

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ä:

  1. Suorita ei-rekursiivinen termi luodaksesi perustulosjoukon (R0).
  2. Suorita rekursiivinen termi ri tulona palauttaaksesi tulosjoukon Ri+1 tulosteeksi.
  3. toista vaihe 2, kunnes tyhjä sarja palaa. (päättymistarkistus)
  4. 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

Vastaa

Sähköpostiosoitettasi ei julkaista.

Previous post Shen Long Resurrected!
Next post Puttyn asentaminen Linuxille