SQLに基づくリレーショナルデータベース管理システムは、条件付きで階層型クエリまたは再帰的クエリにのみ適しています。 ArangoDBなどの他のシステムはここで優れています(これについてはGOTO 2016で素晴らしい話がありました)。 ただし、一般的なテーブル式を使用してSQLで再帰クエリを生成し、すべての祖先と子孫のクラシックな親/子テーブルをクエリすることもできます。
PostgreSQLでは、たとえば次のようになります:
0672c4761d202a35a9059fa137ace7c3
特定のitem_idのすべての子を取得する場合は、共通テーブル式を使用します:
0672c4761d202a35a9059fa137ace7c3
親に問い合わせても問題ありません:
0672c4761d202a35a9059fa137ace7c3