Tanulja meg a PostgreSQL rekurzív lekérdezést példa szerint

Összegzés: ebben az oktatóanyagban megismerheti a PostgreSQL rekurzív lekérdezést rekurzív közös táblázatkifejezések vagy CTE-k segítségével.

Bevezetés A PostgreSQL rekurzív lekérdezésbe

a PostgreSQL biztosítja a WITH állítást, amely lehetővé teszi, hogy segédutasításokat készítsen egy lekérdezésben való használatra.

ezeket az állításokat gyakran közös táblázatkifejezéseknek vagy CTE-knek nevezik. A CTE-k olyanok, mint az ideiglenes táblák, amelyek csak a lekérdezés végrehajtása során léteznek.

a rekurzív lekérdezés egy rekurzív CTE-re utaló lekérdezés. A rekurzív lekérdezések sok helyzetben hasznosak, például hierarchikus adatok lekérdezésében, például szervezeti felépítésben, anyagjegyzékben stb.

az alábbiakban bemutatjuk a rekurzív CTE szintaxisát:

Code language: SQL (Structured Query Language) (sql)

a rekurzív CTE-nek három eleme van:

  • nem rekurzív kifejezés: a nem rekurzív kifejezés egy CTE lekérdezésdefiníció, amely a CTE struktúra alap eredményhalmazát képezi.
  • rekurzív kifejezés: a rekurzív kifejezés egy vagy több CTE lekérdezésdefiníció, amely a nem rekurzív kifejezéssel csatlakozik a UNION vagy UNION ALL operátor. A rekurzív kifejezés magára a CTE névre hivatkozik.
  • befejezési ellenőrzés: a rekurzió leáll, ha az előző iterációból nem adnak vissza sorokat.

a PostgreSQL rekurzív CTE-t hajt végre a következő sorrendben:

  1. hajtsa végre a nem rekurzív kifejezést az alap eredménykészlet (R0) létrehozásához.
  2. hajtsa végre a rekurzív kifejezést ri bemenettel, hogy az eredményhalmaz ri+1 legyen a kimenet.
  3. ismételje meg a 2. lépést, amíg egy üres halmaz vissza nem kerül. (termination check)
  4. visszaadja a végső eredményhalmazt, amely az R0, R1, … RN eredményhalmaz Uniója vagy UNION ALL

PostgreSQL Rekurzív lekérdezési példa

létrehozunk egy új táblázatot a PostgreSQL rekurzív lekérdezés bemutatására.

Code language: SQL (Structured Query Language) (sql)

a employees táblázat három oszlopból áll: employee_id, manager_idés full_name. A manager_id oszlop egy alkalmazott menedzser azonosítóját adja meg.

a következő utasítás mintaadatokat szúr be a employees táblázatba.

Code language: PHP (php)

a következő lekérdezés a menedzser összes alárendeltjét adja vissza a 2 azonosítóval.

Code language: SQL (Structured Query Language) (sql)

hogyan működik:

  • a rekurzív CTE, alárendelt, egy nem rekurzív kifejezést és egy rekurzív kifejezést határoz meg.
  • a nem rekurzív kifejezés az R0 alap eredményhalmazt adja vissza, amely a 2 azonosítóval rendelkező alkalmazott.
Code language: SQL (Structured Query Language) (sql)

a rekurzív kifejezés a 2. Munkavállalói azonosító közvetlen alárendeltjét adja vissza. Ez az alkalmazotti táblázat és a beosztott CTE közötti kapcsolat eredménye. A rekurzív kifejezés első iterációja a következő eredményhalmazt adja vissza:

Code language: SQL (Structured Query Language) (sql)

a PostgreSQL ismételten végrehajtja a rekurzív kifejezést. A rekurzív tag második iterációja a fenti lépés eredményhalmazát használja bemeneti értékként, majd ezt az eredményhalmazt adja vissza:

Code language: SQL (Structured Query Language) (sql)

a harmadik iteráció egy üres eredményhalmazt ad vissza, mert nincs alkalmazotti jelentés az alkalmazottnak a 16, 17, 18, 19 és 20 azonosítóval.

a PostgreSQL a végső eredményhalmazt adja vissza, amely a nem rekurzív és rekurzív kifejezések által generált első és második iteráció összes eredményhalmazának egyesülése.

ebben az oktatóanyagban megtanulta, hogyan kell használni a rekurzív CTE-ket a PostgreSQL rekurzív lekérdezések felépítéséhez.

  • hasznos volt ez az oktatóanyag ?
  • igennem

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

Previous post Shen Long Feltámadt!
Next post Hogyan telepítsük a PuTTY-t Linuxra