問題タブ [transitive-closure-table]
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.
mysql - この SQL クロージャ テーブル クエリについての説明が必要です
この質問への回答として、Bill Karwin は、特定の tree-node-id を指定して、順序付けられたサブツリーをプルバックする次のクエリを投稿しました。
私自身、いくつかのプロジェクトでこのクエリをうまく使用しましたが、このクエリがどのように、なぜ機能するのかを正確に理解していないことに気付きました。私は、クロージャ テーブルの設計について十分に理解していると感じています (主に、階層データを処理する SQL に関する Karwin のデッキを読むことによって)。とはいえ、このクエリを「フィンガー トレース」して、結果セットがどのように構築されているかを説明できるとは思えません。
具体的には、「treePaths」テーブルの2番目のJOINを理解するのに最も苦労しています(これは、各ノード/リーフの先祖と子孫の関係を記録する実際のクロージャーテーブルであると理解しています)。これにより、ブレッドクラムの結果がどのように作成されますか?
mysql - 階層内に名前のリストがある場合、MYSQL のクロージャ テーブルから階層を見つけるにはどうすればよいですか?
フィドル: http://sqlfiddle.com/#!9/c1495/1
「場所」という名前のテーブルがあります。
「クロージャー」という名前のテーブル:
次に、手元にある名前の階層をロケーション ID に変換したいと思います。
例: スウェーデン => ストックホルム => 町の結果:
「町」という名前の場所を返さずにこれを行うにはどうすればよいでしょうか。ただし、親はまったく同じではありませんか?
mysql - MySQLの深さフィールドを持つClosureテーブルでソートされた結果でクエリを制限する最良の方法は何ですか?
階層的なデータの永続性を研究し、クロージャ テーブルに導き、この研究の集大成に基づいてこのコメント構造をつなぎ合わせました。
クロージャ テーブルに新しいノードを作成するためのクエリは簡単に把握でき、クロージャ テーブルの を介して子孫のデータを取得するのJOIN
は簡単です。
ただし、それを拡張して、x の深さまでの親/子の両方の数によって結果を並べ替えて制限したいと思います。
外部キーとインデックスを利用して、物事をタイムリーかつ効率的に保つようにしています (コメント テーブルが非常に大きくなると思います)。私は、タイトルで求めていることを実行できるオールインワン クエリを目指していますが、速度/効率を向上させるために分割することに反対していません。
現在のテーブル構造:
私がやろうとしていることのより明確な要約は、ancestor_id
時間を共有する 20 のコメントを取得することです。また、各人のコメント 2length
をより深く取得しながら (これらをはるかに少ない量 2 に制限しておきます)、時間順に並べ替えます。
ただし、常に時間でソートするつもりはありません。また、これらcomment_id
すべてを単一のクエリで実行することは可能ですか? どこから始めればよいかよくわかりません。
pentaho - Mondrian/Saiku - クロージャ テーブル - Null ポインタ例外
私は現在 PoC を行っており、閉鎖テーブルの問題に直面しています。私は Saiku CE を使用しており、データベースは postgres です。クロージャーテーブルを追加するまで、すべてが機能します。クロージャ テーブル階層を削除しても、エラーは発生しません。そのままにしておくと、エラーが発生します。Saiku 自体からダウンロードした Foodmart.xml を使用して、デモ スキーマを作成しました。
一部のフォーラムでは、モンドリアンの未解決のバグであることが示唆されましたが、そうである場合、同じ構文が foodmart で機能するのはなぜですか? Saiku CE の問題でしょうか?PoC に Saiku EE (試用版) を使用した場合、動作しますか?
11:54:17,900 警告 [RolapUtil] モンドリアン: 警告: JDBC ドライバー sun.jdbc.odbc.JdbcOdbcDriver が見つかりません 11:54:17,902 警告 [RolapUtil] モンドリアン: 警告: JDBC ドライバー oracle.jdbc.OracleDriver が見つかりません 11:54: 18,728 ERROR [SecurityAwareConnectionManager] 接続エラー: ersdemods java.lang.NullPointerException
よろしく、 プニート・タヤル
php - PHP の Mysql Closure テーブル アドレスの子孫
私はポストテーブルを持っています
+----+-------+--------------+
| Id | Name | Message |
+====+=======+==============+
| 1 | John | John's msg |
| 2 | Marco | Marco's msg |
| 3 | Ivan | Ivan's msg |
+----+-------+--------------+
コメントテーブル、PostId は外部キー
http://karwin.blogspot.ba/2010/03/rendering-trees-with-closure-tables.htmlで説明されているように、コメント階層を保持するためのクロージャ テーブルを作成しました。
閉鎖表
+----------+-------------+
| ancestor | descendant |
+==========+=============+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 4 | 4 |
+----------+-------------+
PHPで祖先>子孫関係を作成するには、このクエリを使用します
コメントテーブルから最初の 3 つのコメントで結果を取得します。しかし、私はこれを次のようなWebページに表示したい:
誰が祖先で誰が子孫かをPHPに伝える方法がわかりません。これは私の最善の試みです:
ただし、すべてのコメントが一列に表示されるだけです。コメントが子孫であることを識別する方法が必要です。