SQLでの再帰

SQL に基づくリレーショナルデータベース管理システムは、階層型クエリや再帰クエリには部分的にしか適していません。ArangoDBような他のシステムの方が適しています ( GOTO 2016でこの点について素晴らしい講演がありました)。しかし、共通テーブル式 (CTE)を使用すれば、SQL で再帰クエリを作成することも可能で、例えば、従来の親/子テーブルに対してすべての祖先と子孫をクエリすることができます。


PostgreSQLでは、たとえば次のようになります:

0672c4761d202a35a9059fa137ace7c3

特定のitem_idのすべての子を取得する場合は、共通テーブル式を使用します:

0672c4761d202a35a9059fa137ace7c3

親に問い合わせても問題ありません:

0672c4761d202a35a9059fa137ace7c3

バック