Eksempel

Resume: i denne vejledning lærer du om rekursiv forespørgsel ved hjælp af rekursive almindelige tabeludtryk eller CTE ‘ er.

Introduktion til rekursiv forespørgsel

posttreskl indeholder WITH – sætningen, der giver dig mulighed for at konstruere hjælpesætninger til brug i en forespørgsel.

disse udsagn kaldes ofte almindelige tabeludtryk eller CTE ‘ er. CTE ‘ erne er som midlertidige tabeller, der kun findes under udførelsen af forespørgslen.

en rekursiv forespørgsel er en forespørgsel, der refererer til en rekursiv CTE. De rekursive forespørgsler er nyttige i mange situationer, såsom at forespørge hierarkiske data som organisationsstruktur, materialeregning osv.

følgende illustrerer syntaksen for en rekursiv CTE:

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

en rekursiv CTE har tre elementer:

  • ikke-rekursivt udtryk: det ikke-rekursive udtryk er en CTE-forespørgselsdefinition, der danner basisresultatsættet for CTE-strukturen.
  • rekursivt udtryk: det rekursive udtryk er en eller flere CTE-forespørgselsdefinitioner, der er forbundet med det ikke-rekursive udtryk ved hjælp af operatøren UNION eller UNION ALL. Det rekursive udtryk refererer til selve CTE-navnet.
  • Afslutningskontrol: rekursionen stopper, når der ikke returneres rækker fra den foregående iteration.

Postgraduate udfører en rekursiv CTE i følgende rækkefølge:

  1. udfør det ikke-rekursive udtryk for at oprette basisresultatsættet (R0).
  2. Udfør rekursivt udtryk med Ri som input for at returnere resultatsættet Ri+1 som output.
  3. Gentag trin 2, indtil et tomt sæt returneres. (afslutningskontrol)
  4. returner det endelige resultatsæt, der er en UNION eller UNION ALL af resultatsættet R0, R1, … Rn

rekursiv forespørgselseksempel

vi opretter en ny tabel for at demonstrere rekursiv forespørgsel efter rekursiv forespørgsel.

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

tabellen employees har tre kolonner: employee_id, manager_idog full_name. Kolonnen manager_id angiver en medarbejders leder-id.

følgende erklæring indsætter prøvedata i tabellen employees.

Code language: PHP (php)

følgende forespørgsel returnerer alle underordnede af manageren med id 2.

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

hvordan det virker:

  • den rekursive CTE, underordnede, definerer et ikke-rekursivt udtryk og et rekursivt udtryk.
  • det ikke-rekursive udtryk returnerer basisresultatsættet R0, der er medarbejderen med id 2.
Code language: SQL (Structured Query Language) (sql)

det rekursive udtryk returnerer de direkte underordnede(e) af medarbejder-id 2. Dette er resultatet af sammenføjning mellem medarbejderne bordet og underordnede CTE. Den første iteration af det rekursive udtryk returnerer følgende resultatsæt:

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

udfører rekursivt udtryk gentagne gange. Den anden iteration af det rekursive medlem bruger resultatsættet ovenfor som inputværdi og returnerer dette resultatsæt:

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

den tredje iteration returnerer et tomt resultatsæt, fordi der ikke er nogen medarbejderrapportering til medarbejderen med id 16, 17, 18, 19 og 20.

returnerer det endelige resultatsæt, der er foreningen af alle resultatsæt i den første og anden iteration genereret af de ikke-rekursive og rekursive udtryk.

i denne vejledning har du lært, hvordan du bruger rekursive CTE ‘ er til at konstruere rekursive forespørgsler.

  • var denne tutorial nyttig ?
  • Ja

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

Previous post Shen Længe Genopstået!
Next post Over jorden vand lagertanke / cst Industries