私は多対多の関係を持っています。 たとえば、1つのメインの親は複数の子を持つことができ、それらの子は複数の親を持つことができます。PostgreSQLでツリーを取得
私のメインテーブルには、今、私はすべての直接の親、兄弟と、指定したエントリの直接の子を取得したい
| childId | parentId |
----------------------
2 | 1
3 | 1
4 | 2
5 | 2
5 | 3
6 | 5
のように見えます
| id | name | depth |
---------------------------------
1 | top parent | 0
2 | child1 of 1 | 1
3 | child2 of 1 | 1
4 | child1 of 2 | 2
5 | child2 of 2/3 | 2
6 | child1 of 5 | 3
そして、リンクされたテーブルです。たとえばid 5の場合、2,3,4、および6を取得したいと思います。私はPostgreSQLで初めてです。 1つのクエリでどのように行うことができますか?結果を名前とページ付けする必要があります。
ありがとうございました。私はこのアイデアを持っていましたが、私は1つの質問でそれを行うことができると思いました。また、私は全体の結果を注文する必要があり、それは何百ものレコードになる可能性があります。 – SomethingElse
もちろん、そうすることができます。 'ORDER BY'があります。 1つのクエリで実行したい場合は、各クエリの結果行数が異なるため、結果をどのように表示するかを指定する必要があります。たぶん['array_agg'](https://www.postgresql.org/docs/current/static/functions-aggregate.html)があなたが探しているものです。 –