問題タブ [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.
oracle - Oracle SQL階層クエリ
私は2つのテーブルを持っています:
PRODUCT テーブルで、この結果を得るには、CATEGORY テーブル階層に従っていくつかの列を更新する必要があります。
このためのプロシージャまたは関数を作成する必要がありますか?
sql - テーブルを最大 3 回自己結合するための階層クエリ
次の列を持つテーブルを持つ Oracle DB があります。
セルフジョインを用意しました
出力は次のようになります。
かなり簡単です。この自己結合を階層/再帰クエリとして実行できるかどうかを知りたいです。最大ネスト深度は 3 です。ターゲット出力は次のようになります。
Googleは私を助けていません.階層クエリに関連する情報はたくさんあります. 私はSQLの初心者なので、答えが具体的でない限り、見逃している可能性があります.
sql - ある ID から別の ID へのパスを検索する SQL Server CTE
SQL Server 2008 R2 データベースに、異なる状態間の遷移を定義するテーブルがあります。
関連する表の列の例:
...など
私の目標は、開始StateID、終了StateID、および WorkflowID を定義し、できればそのワークフロー内で開始 StateID から終了 StateID への論理パスを見つけられるようにすることです。
たとえば、上の表の場合、開始 StateID を 17、終了 StateID を 184、WorkflowID を 3 にすると、「パス」は 17>21>184 (より理想的には、TransitionID 2 >トランジションID 11)
いいもの:
- 定義された開始および終了 StateIDには、定義された WorkflowID 内の可能なパスが常にあります。
悪い人:
ほぼすべての送信元/送信先の StateID に確かに循環参照があります (つまり、SourceStateID 1 から DestinationStateID 2 への遷移と、SourceStateID 2 から DestinationStateID 1 への遷移がある可能性があります)。
事実上、定義された開始 StateID と終了 StateID からの複数の可能なパスが確かに存在します。
私が求めているのはある種のCTEであることはわかっていますが、CTEは一般的に把握するのが難しいことを認めており、循環参照が保証された問題である場合は2倍になります。
完璧な解決策は、StateID の開始から StateID の終了までの最短パスを選択することですが、この時点で正直に言うと、2 つの状態の間の有効なパスを確実に提供する何かが機能する場合は、そうします。ハッピー。
そこにいるSQLの専門家は、あなたが私に指摘できる方向性を持っていますか? 正直なところ、17>18>17>18>17>18...
不快な更新 私は感情的なレベルで私を傷つけるこのクエリを思いつきました(この投稿の助けを借りて:https://stackoverflow.com/a/11042012/3253311)が、機能しているようです。
sql - テーブルにサイクルがあるときに CONNECT_BY_ISCYCLE が 1 を返さないのはなぜですか?
ご存知のようscott.emp
に、オラクルのテーブルには階層に循環がありません。しかしemp
、テーブルを少し(UPDATE emp SET mgr=7654 WHERE empno=7698)
変更して、Martin のマネージャーを Blake に、Blake のマネージャーを Martin に変更し、次のクエリを実行しました。
ただし、Martin と Blake に関連するエントリは表示されず、期待されるフィールドに 1 が表示されません。理由が分かれば回答お願いします。
sql - 新しい階層のキーの識別
私のソースが次のように見えると仮定します
そして、私のルックアップテーブルは次のようになります
この場合、完全に一致し、完全なキーが保持される場合にのみ、私のレコードは更新と見なされます。どの列にも一致しない場合は、挿入と見なされます。トリッキーな部分は挿入の場合でもあり、すべての階層レベルをチェックする必要があり、一致するビットのためにキーを保持する必要があります。
たとえば、すでに 1->11->14 があり、1->11->15 を確認すると、これは挿入レコードである必要がありますが、1 と 11 のキーは保持する必要があり、15 の場合は生成する必要があります。
また、1->12->14 を取得した場合、この場合、レコードは挿入と見なされ、キーは 1 に対してのみ保持する必要があり、12 と 14 に対して新しいキーを生成する必要があります
私が考えることができる 1 つの可能な解決策は、データ セットを 2D マトリックスとして扱うことによって、各レベルの左結合を行うことです。しかし、それは素晴らしい方法ではありません。
私が得る出力(また私が欲しいもの)
私のデータベースWX2
は再帰 CTE をサポートしていません。私が持っているのは再帰 CTE を除いて単純な ANSI SQL 構文だけです。
sql - H2 クエリの無限ループ
JUnitを使用して実行されたテストを通じて、3 つのエントリを持つテーブルでH2 データベースに対して次のクエリを実行しています。
クエリは、人を含む自己参照テーブルで実行されます。人のすべての先祖のIDを見つけます。
これは何らかの理由で、テストがハングし、RAM 使用量が急速に (>2GB) 急増することを確認できるため、無限ループであると私が推測するものを実行します。なぜこれが起こっているのですか、どうすれば修正できますか?
所見:
- これはOracleで正常に実行されます
- テーブルにPARENT_IDが指定されていない場合は正常に実行されますが、指定されている場合はハングし、RAM使用量が継続的に増加します。
sql - 階層クエリで内部クエリから列を参照できませんか?
階層クエリを使用して、テーブル構造から詳細を取得しています。「START WITH」条件で内部クエリから列を参照していますが、不明な列エラーがスローされます確認してください
クエリ:
問題は、強調表示された領域にあり、内部クエリから列を参照する予定です。
つまり、 START WITH object_id=sopi.OBJECT_ID が機能していません。助けてください