問題タブ [recursive-cte]

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 投票する
1 に答える
133 参照

sql - JOIN 要素を持つ再帰チェーン?

最近、postgreSQL で再帰クエリを要求しました。答えはうまくいきましたが、JOIN要素を追加するとすぐに次のエラーが表示されます:

エラー: テーブル "n" の FROM 節エントリがありません: WITH RECURSIVE chain AS ( SELECT n.pordnr, pz.pordnrzu, n.abschl, n.stg, n.kzfa, n.pversion FROM pord n LEFT JOIN pordnrzu pz ON pz.pordnr = n.pordnr WHERE n.pordnr = 112 UNION ALL SELECT n.pordnr, pz2.pordnrzu, n.abschl, n.stg, n.kzfa, n.pversion FROM chain c LEFT JOIN pordnrzu pz2 ON pz2.pordnr = n.pordnr INNER JOIN pord n ON (c.pordnrzu = n.pordnr) WHERE c.abschl IS NULL ) SELECT * FROM chain c WHERE c.abschl IS NOT NULL

いくつかの変更を試みましたが、機能させることができません。私が欲しいのは、それpordnrzuが別のものを探すために実装されていることだけpordnrです。

だから:pordnr- > pordnrzu- >pordnr

見逃したものはありますか?

これはサンプルテーブルです:

そして、これは私のクエリです:

私の目的は、最初のエントリーpordnr=112pordnrzupordnrabschl NOT NULL

この例では、ソリューションは次の行になります。


x86_64-unknown-linux-gnu 上の PostgreSQL 9.2.6、gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch リビジョン 152973]、64 ビットでコンパイル

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

oracle - PostgreSQL には、Oracle の「LEVEL」のような疑似列がありますか?

PostgreSQL には、Oracle の「LEVEL」のような疑似列がありますか?
そうでない場合、「LEVEL」のような列を作成するにはどうすればよいでしょうか?

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

tsql - 日付の行で構成された表から、日付が特定の日付範囲にある行の数を数える方法

私はテーブルを持っていますdbo.MyDates:

およびテーブルdbo.People:

私がやろうとしているのは、行1〜3の各日付が特定の日付範囲内にあるかどうかを確認し、範囲内の日付の数を合計することです:

totalDaysWithinRange簡単な数学計算でを使用できるようにします。Java や PHP などの他の言語の while ループの使用方法は知っていますが、私の調査によると、T-SQL では再帰 CTE を使用する方がよいようです。私は過去に CTE を使用したことがあるので、それらがどのように機能するかは知っていますが、再帰 CTE を使用したことはありません。これが私が思いついたものです:

私が理解できないのは、合計を で使用できるように合計を計算する方法SELECT from cteです。ご協力いただきありがとうございます。

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

sql - ストアド プロシージャを再帰 cte に呼び出す

私は次の表を持っています

次のクエリを使用して、pnlid ごとにすべての子を取得します

いくつかの制約で Totalisation を更新するストアド プロシージャ spGetResult を使用しました。

spGetResultstarting最下位の子から上位 (ルート) への再帰的な更新を開始するために、上記のクエリをどのように組み合わせることができますか?

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

sql-server-2012 - 複数の行で rCTE を実行するためのセットベースのソリューションはありますか?

それぞれがポイント(x、y)を宣言する多数の行を格納するテーブルがあります。各行はパターン内の次のポイントを参照するため、パターン全体を取得するためのクエリは、リンクされたリスト構造を通じて再帰的に定義されます。このような完全な構造を取得する rCTE を開発しました...

さらに、上記のテーブルに格納されているこれらの各パターンの開始点を参照する別のテーブルがあります。

最終的な目標は、コンマ区切りのリストに統合された各パターンのすべてのポイントで 2 次元の結果を返すクエリを開発することです。この戻り値は次のようになります。

(ポイントの奇数インデックスは x で、偶数インデックスは y です。)

これを達成する単純な解決策は、親テーブルをループし、親テーブルの行セットごとに@idrCTE を実行することです。それはうまくいくでしょうし、私はすでにこれの大まかな実装をしていますが、私はこの解決策が好きではありません. この目標を達成するためのより良い、より「SQL」な方法はありますか?

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

sql - 親と無限の子を返す Select ステートメント

次のようなテーブル構造を指定します。

指定されたときにテーブル内のすべてのデータを返す単一の SQL ステートメント/関数のエレガントな (可能であれば) ソリューションを探しています。ID = 1

したがって、私の結果は次のようになります。

SO で同様の質問を見たことがありますが、ほとんどの場合、特定の数のレベルのみを見ているようです。

この構造は、最終的には無制限になる可能性があります - 子を持つフォルダ、他の多くの子を持つフォルダ

これは可能ですか?もしそうなら、どうすればそれを達成できますか?

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

sql - 外部の WHERE 句は再帰 CTE で最適化されていますか?

次のテーブル定義を使用します。

次のクエリを使用します。

外部の WHERE 句は再帰 CTE で最適化されていますか? 私が使用を検討した代替手段は次のとおりです。

しかし、そこからビューを作成できないという問題があります。したがって、2 つのパフォーマンスの違いが最小限である場合は、再帰 CTE からビューを作成し、それに対してクエリを実行することをお勧めします。