Rekursio en SQL

Rilataj datumbazaj mastrumaj sistemoj bazitaj sur SQL estas nur parte taŭgaj por hierarkiaj aŭ rekursiaj serĉoj. Aliaj sistemoj kiel ArangoDB estas pli taŭgaj por tio (estis multe da diskuto pri tio ĉe GOTO 2016 ). Tamen, eblas ankaŭ krei rekursiajn serĉojn en SQL uzante Common Table Expressions , permesante al vi, ekzemple, serĉi en klasikaj gepatraj/infanaj tabeloj ĉiujn praulojn kaj posteulojn.


En PostgreSQL ĝi aspektas tiel, ekzemple:

0672c4761d202a35a9059fa137ace7c3

Se vi volas akiri ĉiujn infanojn de certa item_id, vi uzas la Oftajn Tabelajn Esprimojn:

0672c4761d202a35a9059fa137ace7c3

Demandi la gepatrojn ankaŭ ne estas problemo:

0672c4761d202a35a9059fa137ace7c3

Reen