問題タブ [connect-by]
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.
sql-server - Oracle の「CONNECT BY PRIOR」および「ORDER SIBLINGS BY」に相当する SQL Server
SQL Server 2008 に変換しようとしているこの Oracle コード構造があります(注:汎用名を使用し、列名とテーブル名を角かっこ '[]' で囲み、コードをよりわかりやすくするために書式設定を行いました読み取り可能) :
上記のコードに相当する SQL Serverのテンプレートは何ですか?
具体的には、LEVELと 'ORDER SIBLINGS BY' Oracle コンストラクトに苦労しています。
注: 上記の「コード」は、一連の Oracle プロシージャからの最終的な出力です。基本的に、'WHERE' 句は動的に構築され、渡されるさまざまなパラメーターに応じて変化します。「CONNECT BY PRIOR」で始まるコード ブロックはハードコードされています。
参考のため:
SQL SERVER での ORACLE の CONNECT BY PRIORのシミュレーションの記事に近づいていますが、'LEVEL' および 'ORDER SIBLINGS' コンストラクトの処理方法については説明されていません。...そして、私の心はねじれています!
に等しい:
使用する最初のテンプレートがあれば、SQL Server ストアド プロシージャを構築して正しい T-SQL ステートメントを構築するのに大いに役立ちます。
助けていただければ幸いです。
sql - 接続で指定されたIDを持つ完全な子ブランチを取得する方法
parent_id = null
指定された子 ID を持つ子から子へのブランチを取得したい
結果は要素ID: 56のフル ブランチです。
選択した子を持つブランチを選択する方法
例:
結果は次のとおりです。
私が達成したいのは、指定された子ID: 57でそのブランチのみを選択することです
oracle11g - リンクのシーケンスを作成する
1 つまたは複数のセグメントから作成されたパスがあるとします。すべてのパスにはidがあり、セグメントがidを使用してパスからのものかどうかを確認できます。すべてのセグメントには、始点と終点があります。
問題は、セグメントが開始 - 終了 - 開始 - 終了の順序になっていないことです。
セグメント表:
私が実際に必要としているのは、次の表に示すように、各パスのセグメントを開始位置から終了位置まで並べ替え、シーケンス番号を付けることです。
これは私がやろうとしていることです:
私は解決策にはほど遠いと思いますが、必要なシーケンス番号だけを持っているのではなく、ここで何かが欠けています.順序。
また、約 3,000 のパスから約 4.5,000 のセグメントがあり、何百万ものレコードが得られます。
どんな助けでも大歓迎です。
sql - ORACLEを使用してツリーでグループをカウントするには?
現在、このようなデータセットがあります。(8件)
ツリーは次のようになります。
そして、すべての合計レコードを子ごとに数えたいと思います(サブ子ではなく、サブ子のレコードは、最初のレベルの子ノードまで父または祖父に計算する必要があります)。
結果は次のようになります。
しかし、start with connect by および group by キーワードを使用すると、期待した結果が得られません。
私のSQLは次のとおりです。
結果は空です..誰が私を助けることができますか? または、ツリー構造と一緒に使用すると、キーワードによるオラクルのグループの詳細が機能することを誰が知っていますか?
sql - Oracleで「connect by」の代替方法はありますか?
の代替を探していますCONNECT BY
:
助言がありますか?
sql - Oracle CONNECT BY クエリのインデックスと時間の複雑さは?
次の構造を持つOracle 11g テーブル (と呼ばれるitems
) に格納されている複数の階層メニューがあります。
menu
: 項目が属するメニューの ID。id
: メニュー項目の ID。メニュー内ではユニークですが、テーブル内ではユニークではありません。name
: メニュー項目の名前。parent
:id
メニュー項目の親 (常に同じメニューにあります)。
テーブルには約 100.000 行が含まれています。次のクエリを使用して、すべてのメニュー項目とそれに対応するルート項目のリストを生成します。
(1 つのメニューに複数のルートが存在する可能性があるため、connect by なしで通常の結合を使用することはできません。)
このクエリを最適化するには、どのインデックスを作成する必要がありますか? id
一意性を確保するためにとの複合インデックスを既に持っていますがmenu
、それ以上必要ですか?
また、適切なインデックスを作成した場合、このクエリの複雑さはどのくらいになるでしょうか? アイテムの総数、メニューごとの数、メニューの深さに関連していますか?
編集:これは次の出力ですEXPLAIN PLAN
:
ただし、まだ完全なデータセットを持っていないため、これは 100 アイテムの小さなデータセットのみです。スペース上の理由から、いくつかの列を除外しました。出力から他に何か必要な場合はお知らせください。
sql - ルートの親のみを選択する Oracle 階層クエリ
ツリー データがあり、ルートの親のみを選択しようとしています。データはより大きなセットのサブセットである可能性があるため、親が空でない可能性があります。データセット内の各ツリーの最上位レベルを取得したいと考えています。
として結果を表示したい
サブセットの一部が親であるため、ROWID 4 は選択されていませんが、4.1 がこのデータ セットの最上位であるため、その行を返したいと考えています。基本的に、各階層の最上位レベルのレコードをすべて表示したいと思います。
ありがとうございました。
sql - pl/sql コードを Ansi-Sql にするには?
私の質問は、SQL の専門家にとって難しいものではないかもしれません。SQL を ansi-sql として書き直したい。Oracle で以下の SQL を ansi-sql に変更するにはどうすればよいですか?
sql - 階層クエリ (connect by 句)
connect by 句を使用してクエリを作成しようとしていますが、それを処理できません。
一般的に私はテーブルを持っています:
そして今、私がやりたいのは、支払い列が入力されていないアカウントを見つけることです (親アカウントも) すべてのアカウントは、他のアカウント ID を示す親アカウント (親列) を持つことができます。例を示した方が簡単かもしれません:
最初のアカウントは問題ありません - 支払い欄が記入されています。2 番目は null であるため問題ありませんが、親アカウントがあることがわかります (3457 アカウント) を確認すると、支払い列は null ですが、親アカウント (5686) があり、最後に支払い列があります。いっぱい。したがって、select の上のシチュエーションでは何も表示されません。
5686
アカウント IDの横にある 1 つの変更のみが null であることがわかるため、正しい選択でアカウントが表示されるはずです。4576, 3457, 5686