問題タブ [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.
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=112
がpordnrzu
pordnr
abschl NOT NULL
この例では、ソリューションは次の行になります。
x86_64-unknown-linux-gnu 上の PostgreSQL 9.2.6、gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch リビジョン 152973]、64 ビットでコンパイル
oracle - PostgreSQL には、Oracle の「LEVEL」のような疑似列がありますか?
PostgreSQL には、Oracle の「LEVEL」のような疑似列がありますか?
そうでない場合、「LEVEL」のような列を作成するにはどうすればよいでしょうか?
tsql - 日付の行で構成された表から、日付が特定の日付範囲にある行の数を数える方法
私はテーブルを持っていますdbo.MyDates
:
およびテーブルdbo.People
:
私がやろうとしているのは、行1〜3の各日付が特定の日付範囲内にあるかどうかを確認し、範囲内の日付の数を合計することです:
totalDaysWithinRange
簡単な数学計算でを使用できるようにします。Java や PHP などの他の言語の while ループの使用方法は知っていますが、私の調査によると、T-SQL では再帰 CTE を使用する方がよいようです。私は過去に CTE を使用したことがあるので、それらがどのように機能するかは知っていますが、再帰 CTE を使用したことはありません。これが私が思いついたものです:
私が理解できないのは、合計を で使用できるように合計を計算する方法SELECT from cte
です。ご協力いただきありがとうございます。
sql - ストアド プロシージャを再帰 cte に呼び出す
私は次の表を持っています
次のクエリを使用して、pnlid ごとにすべての子を取得します
いくつかの制約で Totalisation を更新するストアド プロシージャ spGetResult を使用しました。
spGetResultstarting
最下位の子から上位 (ルート) への再帰的な更新を開始するために、上記のクエリをどのように組み合わせることができますか?
sql-server-2012 - 複数の行で rCTE を実行するためのセットベースのソリューションはありますか?
それぞれがポイント(x、y)を宣言する多数の行を格納するテーブルがあります。各行はパターン内の次のポイントを参照するため、パターン全体を取得するためのクエリは、リンクされたリスト構造を通じて再帰的に定義されます。このような完全な構造を取得する rCTE を開発しました...
さらに、上記のテーブルに格納されているこれらの各パターンの開始点を参照する別のテーブルがあります。
最終的な目標は、コンマ区切りのリストに統合された各パターンのすべてのポイントで 2 次元の結果を返すクエリを開発することです。この戻り値は次のようになります。
(ポイントの奇数インデックスは x で、偶数インデックスは y です。)
これを達成する単純な解決策は、親テーブルをループし、親テーブルの行セットごとに@id
rCTE を実行することです。それはうまくいくでしょうし、私はすでにこれの大まかな実装をしていますが、私はこの解決策が好きではありません. この目標を達成するためのより良い、より「SQL」な方法はありますか?
sql - 親と無限の子を返す Select ステートメント
次のようなテーブル構造を指定します。
指定されたときにテーブル内のすべてのデータを返す単一の SQL ステートメント/関数のエレガントな (可能であれば) ソリューションを探しています。ID = 1
したがって、私の結果は次のようになります。
SO で同様の質問を見たことがありますが、ほとんどの場合、特定の数のレベルのみを見ているようです。
この構造は、最終的には無制限になる可能性があります - 子を持つフォルダ、他の多くの子を持つフォルダ
これは可能ですか?もしそうなら、どうすればそれを達成できますか?
sql - 外部の WHERE 句は再帰 CTE で最適化されていますか?
次のテーブル定義を使用します。
次のクエリを使用します。
外部の WHERE 句は再帰 CTE で最適化されていますか? 私が使用を検討した代替手段は次のとおりです。
しかし、そこからビューを作成できないという問題があります。したがって、2 つのパフォーマンスの違いが最小限である場合は、再帰 CTE からビューを作成し、それに対してクエリを実行することをお勧めします。