問題タブ [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.

0 投票する
3 に答える
9891 参照

sql - オラクル ツリー クエリでの他のテーブルの結合

次のような単純な (id、説明) テーブル t1 が与えられます。

そして、親子関係テーブルt2、

Oracle は、いくつかのカスタム構文拡張を使用して、これをツリーとしてトラバースする方法を提供しています。

正確な構文は重要ではなく、おそらく上記で間違いを犯した可能性があります。重要なことは、上記が次のようなものを生成することです

私の質問はこれです: 上記の t1 テーブルなど、sys_connect_by_path() 内の別のテーブルに参加して、次のようなものを生成することは可能ですか?

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

sql - Oracle 9iは、指定された子を持つツリーの最高メンバーを取得します.

Oracle 9i データベーステーブルに親子関係があります

お気に入り:

特定の子から絶対親を取得する必要があります。たとえば、私には子 4 があり、それは私に親を与える必要があります: 1

私はすでに CONNECT BY を調べましたが、解決策が見つかりません。

0 投票する
3 に答える
23182 参照

oracle - Oracle との結合、内部結合、合計の混合

Oracle クエリについてサポートが必要です。

これが私のセットアップです:

それぞれ「タスク」と「タイムシート」と呼ばれる2つのテーブルがあります。「タスク」テーブルは再帰的なもので、各タスクが複数のサブタスクを持つことができます。各タイムシートはタスク (「ルート」タスクとは限りません) に関連付けられており、その作業にかかった時間数が含まれています。

例:

タスク

id:1 | 名前: タスク A | 親 ID: NULL

id:2 | 名前: タスク A1 | 親 ID: 1

id:3 | 名前: タスク A1.1 | 親 ID: 2

id:4 | 名前: タスク B | 親 ID: NULL

id:5 | 名前: タスク B1 | 親 ID: 4

タイムシート

id:1 | タスク ID: 1 | 時間: 1

id:2 | タスク ID: 2 | 時間: 3

id:3 | タスク ID:3 | 時間: 1

id:5 | タスク ID:5 | 時間:1 ...

私がしたいこと:

「タスク階層」で働いたすべての時間の合計を返すクエリが必要です。前の例を見ると、次の結果が必要であることを意味します。

タスク A - 5 時間 | タスク B - 1 時間

まずはこれでやってみた

そして、それはほとんど機能します。唯一の問題は、ルート タスクのタイムシートがない場合、階層全体がスキップされることですが、子行のタイムシートが存在する可能性があり、まさにタスク B1 で発生します。私の問題を引き起こしているのは「内部結合」部分であることはわかっていますが、どうすればそれを取り除くことができるかわかりません。

この問題を解決する方法はありますか?

ありがとうございました

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

oracle - where句を使用せずにカスタム式を作成できますか?

前の質問でネイティブクエリを使用してこの問題をすでに解決しましたが。where句を使用せずにCriteriaで使用できるカスタム式を作成できるかどうか疑問に思っています。where句が不要な理由は、Oracle connect by ... start with ...ここ)のステートメントのためです。このページをたどって始めました。ただし、これにより次のようなコードが生成されますselect * from foo where connect by start with...

これが私が使っているものです。何が生成されるかを見ると、where句を除いた正しいステートメントが生成されていると言えます。

こんな感じで使っています。

DetachedCriteriaからのものと関係があると感じていますが、.Add()100%確実ではありません。残念ながら、カスタム式の作成に関するドキュメントがあまり見つからないようです。

編集:今、私はそれについて考えると、間違った木を吠えているように見えます。これは重要ではありませんが(私はすでにまともな実装をしています)。NHibernateをさらにカスタマイズする方法にまだ興味があります。

編集2:箱から出してすぐにNHibernateはOracle独自の機能をサポートしていないため、start with ... connect by。NHibernateのネイティブサポートを追加して、NHibernateの拡張についてもっと学ぼうとしています。これらの関数をカスタム方言で登録できることは承知しています。しかし、他の基準クエリで使用できるように、基準として実装できるかどうか疑問に思っています。私が投稿したコードは正常に機能し、有効なSQLを正しく作成しますが、StartWithConnectByCriteriaを条件に追加すると、NHibernateはなどのクエリを発行しますselect this_.id from table where start with ... connect by。その句はwhereに属していないため、これは無効なクエリです。

これは、NHibernateが生成することを期待するクエリです。

whereこのクエリには句がないことに注意してください。ただし、start with ... connect byそれでも。で使用できますwhere clause。これらのキーワードがどのように機能するかについて詳しくは、こちらをご覧ください。

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

sql - Oracle 'CONNECT BY' 構文

これは次の質問から派生したものです: 2 つの結果セット間の重複を除外する

その質問のコメントのように、Oracle の特別な「CONNECT BY」構文を使用してクエリを実装しようとしています。私の場合、構文を実装する方法に関する(明確な)情報を見つけるのに苦労しています。

私のクエリ:

誰かが私を正しい方向に向けて、別の構文に変換することができますか?

私は次のようなことを考えています:

これは明らかに機能しておらず、fnpp の機能を統合する方法がわかりません... まだ.何か助けはありますか?

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

oracle10g - oracle connect by , start with ステートメントを使用して、各子の最後の親だけを取得したい

start with 、 connect by ステートメントを使用してデータを再帰的に取得しています。すべての親子を取得していますが、各子の最後の親を取得したいだけです。たとえば、次のデータがあります

だから私は出力が欲しい

私のクエリは

どんな体でもこれで私を助けることができますか?

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

sql - Oracleでの相関行生成クエリ

この開始CTEを考えると:

StartUnitとEndUnit(両端を含む)の間にある数値と同じ数の行ごとに、値が昇順である結果セットを生成するにはどうすればよいですか?

つまり、次の結果セットが表示されます。

Sections CTEの値の一部はパラメーターになるため、UNIONを正しい数に拡張するほど簡単ではないことに注意してください。

アップデート

これについてもう少し考えて、別のガイドラインがあります。私は正しい答えを取りますが、特に誰かがCONNECT BY PRIORを使用し、途中で追加のCTEを使用せずにこれを行う方法を示すことを望んでいました...

CTEを次のように変更できることに気づきました。

ただし、DUALから選択されるのではなく、テーブルから取得される可能性があるため、ここではそれを避けています。したがって、Sections CTEが実際には、次のようなテーブルからの単純なクエリであると仮定します。

そして、元の質問はまだ残っています。

0 投票する
3 に答える
6420 参照

sql - Oracle 以外の RDBMS での CONNECT BY または階層クエリ

Oracle には、非常に便利な機能が付属しています。次の句を使用して、階層クエリ (再帰動作) を作成できます。

ここに文書化されているように:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/queries003.htm

同等または類似の構文をサポートする他の確立された RDBMS はありますか? または、このような再帰的な動作は、通常の SQL を使用して一般的にシミュレートできますか?

シミュレートできるようにしたい良い例は次のとおりです (Oracle のドキュメントから取得)。

その結果:

疑似列とそれLEVELで達成されるインデントは、私にとってそれほど重要ではありません

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

oracle - Oracle CONNECT BY クエリで ORDER BY マネージャーを DESCENDING する方法はありますか?

このシチュエーションで...

結果はこんな感じ。

接続中、マネージャーは昇順になっているようです。降順で表示するように、この動作を制御する方法はありますか?

ありがとう

悪の

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

sql - CONNECTBYパラメーターをオプションにする方法

を使用する手順がありますConnect By

数値1337はこのプロシージャのパラメータです。この値の場合0、コードを無視して他のconnect byすべてを実行します。

どうすればこれを処理できますか?