問題タブ [hierarchical-query]

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.

0 投票する
0 に答える
1177 参照

java - 休止状態で「事前に接続」を実装する方法は?

これはオラクルでの私のクエリですがGeneric、アプリケーション全体で使用される関数として休止状態で実装したいと考えています。それから私はそれをグーグルで検索し、休止状態がこのタイプのクエリをサポートしていないことに気付きました。

ノート

  1. 名前付きクエリを使用したくありません。
  2. 冬眠初心者です
0 投票する
1 に答える
7329 参照

postgresql - 再帰クエリを使用して階層ツリー構造を逆方向にトラバースする方法

私は PostgreSQL 9.1 を使用して、ノードへの接続を持つエッジ (または要素) で構成される階層ツリー構造のデータをクエリしています。データは実際にはストリーム ネットワーク用ですが、問題を単純なデータ型に抽象化しました。例のtreeテーブルを考えてみましょう。各エッジには長さと面積の属性があり、ネットワークからいくつかの有用なメトリックを決定するために使用されます。

これは、AE で表されるエッジがノード 1 ~ 5 に接続されている以下に示すことができます。NULL to_node(Ø) は終了ノードを表します。はfrom_node常に一意であるため、PK として機能できます。このネットワークが流域のように流れる場合、支流の開始エッジは A、B、C であり、流出エッジの終了は E です。

木

ドキュメントはWITH、再帰クエリで検索グラフを使用する方法の良い例を提供します。したがって、「前方」情報を取得するために、クエリは最後から開始され、逆方向に動作します。

上記は理にかなっており、大規模なネットワークに適しています。たとえば、エッジBは端から 3 エッジであり、前進パスは{B,D,E}先端から端までの全長が 3.5 であることがわかります。

ただし、逆クエリを作成する良い方法がわかりません。つまり、各エッジから、蓄積された「上流」のエッジ、長さ、および面積はいくらかです。を使用してWITH RECURSIVE、私が持っている最高のものは次のとおりです。

各ダウンストリーム エッジは 1 つまたは多数のアップストリーム エッジに接続するため、再帰クエリの 2 番目の項に集計を組み込みたいと考えていますが、再帰クエリでは集計が許可されていません。また、with recursive結果には の結合条件が複数あるため、結合がずさんであることは承知していedgeます。

逆/後方クエリの予想される結果は次のとおりです。

この更新クエリを作成するにはどうすればよいですか?

最終的には、正確な長さと面積の合計を蓄積することに関心があり、パス属性はデバッグ用であることに注意してください。私の現実のケースでは、順方向のパスは最大で数百であり、大規模で複雑な集水域の逆方向のパスは数万になると予想しています。

0 投票する
2 に答える
958 参照

sql - Connect by を使用してツリーの最上位レベルのパーツを取得する

次の表があります。

A が親で、B が子です。

子の値 'E' と 'F' をクエリに入力し、これらの両方の 'A' である必要がある両方の最上位の親のみを取得したいと思います。私が使用しているクエリは次のとおりです。

以下を返します。

正しい最上位の親を返さないのはなぜですか?

0 投票する
1 に答える
838 参照

php - SQL ツリー構造の親子

次のデータがあります。

PhoneBook id とそのすべての親を照会しています。彼の親は null であり、彼は TextWritingProggie を介して接続されたプリンターを介して接続され、電話帳に接続されているため、エディターにつながる階層である必要があります。

SQL を使用する方が好ましいと思いますが、PHP で処理する必要があるかもしれません。

これは私がこれまでに得たものですが、TextWritingProggie を含まないレコードの後に​​停止します

どんな助けでも素晴らしいでしょう

0 投票する
1 に答える
145 参照

sql - 1 対多の関係を持つ階層クエリ

3 つのテーブルがあります。d_algorithme:

d_algo_ope:

そして最後にd_algo_maj

次のような結果を返すクエリを作成したい:

最初の 2 つの列は からd_algorithmeのもので、 でhas_maj直接または間接的に参照されるアルゴリズムがあるかどうかに応じて、0 または 1 になりd_algo_majます。d_algo_ope間接参照は、一緒に階層を形成する1 つ以上のレコードを介して行われます。

表示されているサンプル データの場合:

  • 300: のアルゴリズムまたはd_algo_opeレコードがなく、 のレコードid_algo = 1もありません。d_algo_majid_algo = 300
  • 301: (列を 1 に設定するのに十分な) のd_algo_majレコードがあります。id_algo = 301has_maj
  • 302: のd_algo_majレコードはありませんid_algo = 302。ただし、 withと withのd_algo_opeレコードがあり、これは 302 アルゴリズムが 301 アルゴリズム ( を含む) を参照しているため、列を 1 に設定する必要があることを意味します。num_operation = 301id_algo = 302majhas_maj

これがDDLとDMLおよびその他の詳細です(私が実際に持っているものから単純化されています):

0 投票する
2 に答える
141 参照

sql - セルフループテーブルをナビゲートする方法は?

次の表を検討してください

これは自己ループテーブルです。つまり、ルートを除くすべての従業員にマネージャーがいます。

このテーブルで次のクエリを実行します。

すべての従業員がマネージャーよりも多くの給与を受け取っていることを確認しますか?


PS

構造のルートは 1 つだけです。

次のクエリを検討してください

結果は次のようになります。

私は次のクエリを作成しました

これにより、従業員テーブル内のすべての従業員のサブツリーが下から上に作成されますが、目的の結果に到達するためにナビゲートする方法がわかりません!

0 投票する
2 に答える
2718 参照

sql - 単一のテーブル oracle から階層列または親子列の値を見つける

テーブル名ツリーがあり、1 つはp、2 番目はchの 2つの列があります。

私が望む出力は、親にリンクされたすべての子です。たとえば、すべての親要素と子要素を見つける必要がある入力として「1」を指定すると、この場合、1 は 2,3,4 の親であり、2 は 5 の親です...この場合、私は以下に示すように、リンクされたすべての子要素と親自体が必要です。

以下は私が書いたクエリです。テーブルに大きなデータがあるため、それが最善の解決策であるか、より良い方法で実行できるかを確認したいと思います。

0 投票する
1 に答える
109 参照

sql - 階層クエリ / テーブル入力に基づく

アカウント テーブル:

情報テーブル:

製品表:

アカウント テーブルには、アカウントの ID が含まれます。ただし、一部のアカウント ( ID_ACC ) には親アカウント ( Parent_acc ) があります。この例では、

同じparent_acc(76543)があります。

一部の子には情報があります (情報テーブル)

(この例では、1825234456が情報テーブルに接続されていることを示しています)

次に、いくつかの info.account_id に製品 (Product テーブル) が含まれています (この例では、18252 accountid のみがアカウント番号: 456452を持つ製品を持っています)。

すべてのアカウント階層を選択したい:

(私にとって)最も難しいことは、(表示するために)テーブルに基づいている必要があることです。to_showテーブルが次のように入力されている場合。34456 アカウントの出力は、上記のリストと同じである必要があります。

to_show テーブルが次のように入力されている場合。「76543,18252,34456」の場合、上記と同じ状況など...

私が必要とするのは、to_show テーブルにあるアカウント (製品テーブルまたは情報またはアカウント) に関係なく、すべての階層を表示することです...入力として、製品テーブルから子/親またはアカウントを取得できます。私はそれをやろうとしていましたが、残念ながら私には難しすぎます (私は階層クエリの初心者なので..)。みんな、私を助けてくれませんか?