問題タブ [common-table-expression]
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 - 再帰 CTE で生成された最後のレコードを取得するにはどうすればよいですか?
以下のコードでは、SQL Server 2005 で再帰的な CTE (Common Table Expression) を使用して、基本的な階層構造の最上位レベルの親を見つけようとしています。この階層のルールは、すべての CustID に ParentID があり、CustID に親がない場合、ParentID = CustID であり、それが最上位レベルです。
したがって、tblCustomer が次のようになっている場合:
上記のコードから得られる結果は次のとおりです。
私が欲しいのは、その結果の最後の行だけです:
CTE で生成された最後のレコード (最高レベルの CustID) を返すにはどうすればよいですか?
また、このテーブルには関連のない CustID 階層が複数あるため、単に SELECT * FROM tblCustomer WHERE ParentID = CustID を実行することはできません。ID 番号は階層のどこにあるかに関連していないため、ParentID または CustID で注文することはできません。
sql - CTEを使用することの長所/短所は何ですか?
一部のSQLのパフォーマンスを改善することを検討しています。現在、CTEはスクリプトで複数回使用され、参照されています。代わりにテーブル変数を使用して改善を得ることができますか?(コードは関数内にあるため、一時テーブルを使用できません)。
rdbms - 有向グラフを保存/アクセスする最良の方法
約 3500 の洪水制御施設があり、フロー パスを決定するためにネットワークとして表現したいと考えています (基本的に有向グラフ)。私は現在、SqlServer と CTE を使用して、すべてのノードとその上流コンポーネントを再帰的に調べています。これは、上流パスが多く分岐しない限り機能します。ただし、一部のクエリは、物理的にパスを下っていなくても (つまり、「ダウンストリーム」セグメントが 2 つまたは 3 つ)、アップストリームの複雑さが増すため、他のクエリよりも指数関数的に時間がかかります。場合によっては、クエリを強制終了する前に 10 分以上放置しました。私は単純な 2 列のテーブルを使用しています。1 つの列は施設自体で、もう 1 つは最初の列にリストされている施設の上流にある施設です。
現在の機能を使用してインデックスを追加して高速化を試みましたが、違いはありませんでした。また、グラフで可能な接続に関しては、どのノードも複数の上流接続を持つことができ、複数の「下流」ノードから接続することができます。
データに循環がある可能性は確かにありますが、これを確認する良い方法をまだ見つけていません (CTE クエリが最大再帰カウント ヒットを報告した場合を除き、それらは簡単に修正できました)。
それで、私の質問は、この情報を間違って保存しているのでしょうか? 上流のポイントを照会する CTE 以外のより良い方法はありますか?
sql - Linq の階層データ - オプションとパフォーマンス
いくつかの階層データがあります。各エントリには ID と (null 可能) 親エントリ ID があります。特定のエントリの下にあるツリー内のすべてのエントリを取得したいと考えています。これは SQL Server 2005 データベースにあります。C# 3.5 で LINQ to SQL を使用してクエリを実行しています。
LINQ to SQL は、共通テーブル式を直接サポートしていません。私の選択は、いくつかの LINQ クエリを使用してコードでデータを組み立てるか、CTE を表示するデータベースのビューを作成することです。
データ ボリュームが大きくなった場合に、どのオプション (または別のオプション) のパフォーマンスが向上すると思いますか? SQL Server 2008 のHierarchyId 型は Linq to SQL でサポートされていますか?
sql-server-2005 - SQL Server のパフォーマンス: 派生テーブルと共通テーブル式 (CTE)
派生テーブルよりも CTE を使用すると、パフォーマンスが向上しますか?
mysql - MySQL の「WITH」句
MySQL を使用して、"WITH" 句を含むビューを作成しようとしています。
しかし、MySQL がこれをサポートしているようには見えません。
これはかなり標準的だと思いました。Oracle がこれをサポートしていると確信しています。MySQLに「WITH」句の使用を強制する方法はありますか? MyISAM と innoDB エンジンで試してみました。これらはどちらも機能しません。
sql - 再帰クエリのヘルプ
私は成功できなかった問題をフォローしています。あなたの助けに感謝します。私は SQL 2005 を使用しており、CTE を使用してこれを実行しようとしています。
テーブルには次の 2 つの列があります
期待される結果は次のとおりです
ありがとうラフル・ジェイン
コメントから転写されたさらなる説明:
次のようなクエリを使用しています。
上記のクエリの結果は次のとおりです
問題に示されているように、これらの数字を繰り返したくありません。
sql-server - SQLServerを使用して範囲値をグループ化する方法
私はこのような値の表を持っています
ご覧のとおり、最初の番号に追加された2番目の番号は、シーケンスの次の番号の1つ前です。最後の数値は範囲内にありません(次の値のように、直接のシーケンスには従いません)。私が必要としているのは、これを出力するCTE(はい、理想的には)です
最初の行には、範囲の開始番号が含まれ、次にその中のノードの合計が含まれます。次の行は次の範囲であり、この例では元のデータと同じです。
sql-server - SQL Server 2005 での階層クエリの並べ替え
次の問題があります。階層データを維持するためのテーブルがあります。SQL 2005 の CTE を使用したいと考えています。
しかし、コードで並べ替えたいのですが、結果は次のようになります。
など アイデアはありますか?