問題タブ [ltree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 賛成票で LTree を並べ替える
コメントシステムを書いています。ここのチュートリアルに従って階層を取得できました( http://www.postgresonline.com/journal/archives/173-Using-LTree-to-Represent-and-Query-Hierarchy-and-Tree-Structures.html )
ただし、賛成票で行を注文するのに問題があります。ORDER BY PATH, n.upvotes
同じスレッドの返信には異なるnode paths
. node_paths
を使用して計算されpublic_key
ます。
与えられた例から
のノード パスはb
それぞれおよびc
になります。ノードパスとそれらから単純に and を差し引くことはできません。私がそうすると、次の順序になります。a.b
a.c
b
c
ORDER BY
public_key
から各行を削除するnode_path
と、単純に短い順に並べ替えられるため、これは理にかなっていますnode_path
。
正しい階層になり、次のように賛成票でソートされるクエリを作成するにはどうすればよいですか。
sql - PostgreSQL ltree - ltree で構築されたバイナリ ツリーから左/右のほとんどのパスと子を取得する方法は?
私は PostgreSQL と ltree を使用して、バイナリ ツリー データの大規模なセットを構築しています。特定のロジックでは、特定のノードの左端/右端のパスを取得する必要があります。
私の二分木のサンプル
私のテーブルコンテンツのサンプル
サンプル入力と期待される出力:
入力 - ノード 1、左端の子
出力 - 1、1.L2、1.L2.L3、... (一番左の外側の子のみ)
この結果をpostgresql、ltreeクエリで取得したいと思います。
これを解決するのを手伝ってください。
より優れたpostgreテーブルの設計も提案できますが、それは大量のデータで優れたパフォーマンスを得る必要があります.