問題タブ [recursive-query]

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

mysql - mySQL推移閉包テーブル

SQL Serverで、直接の親子関係だけを持つ別のテーブルからクロージャーテーブルを生成するために使用しているコードがいくつかあります。これに対して非常に単純なクエリを実行して、系統を決定できます。今、私はmySQLでこれらすべてを行う必要がありますが、クロージャテーブルを生成するための再帰クエリで問題が発生しています...

私の元のSQLサーバークエリは

私の最初の問題は@@ROWCOUNTの置換を見つけることです...しかし、おそらく再帰クエリはmySQLでは完全に異なりますか?ビル・カーウィンのプレゼンテーションもチェックしました

PS。「COLLATEDATABASE_DEFAULT」は、パフォーマンスの問題のために必要なものでした。

ありがとう。

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

sql - 再帰クエリとカーソル式を混在させる

階層構造を表すデータを含むテーブルがあります。単一の「オブジェクト」についてこのテーブルからデータを取得する最も簡単な方法は、再帰クエリです。同じテーブルには、「オブジェクト」に関連付けられている「メンバー変数」も格納されます。1つのクエリでオブジェクト構造と関連するメンバー変数を確認するとよいと思ったので、次のように試しました。

...そしてOracleは「カーソル式は許可されていません」と言っています。

これを2つの別々のカーソルとして実行すると(一方の結果をループし、それらの結果に基づいてもう一方のカーソルを使用する)、すべてが正常に機能するため、単一カーソルソリューションは必要ありません。

カーソル式を使用してこれら2つのクエリを組み合わせることができない理由を知りたかっただけです。または、それらを組み合わせることができて、どういうわけかそれを見逃したのでしょうか。

(Oracleバージョンは10gです)

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

python - SQLAlchemy ORM で熱心な読み込みのために再帰の深さを動的に調整するにはどうすればよいですか?

テーブル A がテーブル B を参照し、テーブル B がテーブル A の別のレコードを参照するという 2 つのテーブルの階層セットアップがありますが、指定された再帰の深さまでしかありません。

これは、SQLAlchemy と宣言型を使用してうまく機能しています。また、テーブル リレーションのlazyおよびプロパティを使用した熱心な読み込みをうまく使用しています。join_depthこれは、SQLAlchemy のドキュメントのとおりです。

ただし、この配置ではjoin_depth、プログラムのロード時に ' ' で再帰の深さが固定されます... しかし、使用しているデータを使用すると、毎回使用する必要がある再帰の深さがわかります。 クエリごとに使用される再帰の深さを変更するにはどうすればよいですか?

ベース ORM オブジェクトのマスター プロパティをいじることを検討しjoin_depthましたが、危険なマルチスレッドの scoped_session アプリケーションを使用しているため、これは機能しません (パラメーターが非常に難しいという事実は言うまでもありません)。実行時に SQLAlchemy 内で見つけてください!)。

クエリでの使用も検討しましたjoinedloadが、それで深さを変える方法がわかりません。

一部のデータベースではCTEWITH RECURSIVE経由で ' ' SQL 構文を使用できることも認識していますが、これは素晴らしいことですが、一部の DB ではまだサポートされていないため (少なくとも SQLAlchemy もサポートしていないため)、当面は避けたいと思います。現時点ではなく、多くの方言のカスタマイズがないわけではありません)。

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

mysql - MySQLで行を再帰的に削除する(つまり、外部キーにリンクされた行も削除する)方法は?

MySQL データベースで制約を使用します。しかし、他のエントリが外部キー関係にあるエントリを削除しようとすると、頭痛の種になります。私はいつもこのエラーを受け取ります:

削除しようとしている行と外部キー関係を持つすべての行を再帰的に削除するように、削除ステートメントに任意のパラメーターまたは何かを渡すことはできますか?

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

sql - 1 つのメッセージのエントリ ポイントが指定されたメッセージ スレッドの SQL 2008 再帰クエリ

ややこしいタイトルかもしれません。基本的に、電子メールの受信トレイを考えてください。私はテーブルを持っています:

代替テキスト

ご覧のとおり、これは非常に単純な再帰テーブルであり、メッセージのparentIDのみを持ち、緑色のハイライトリングでわかるように、「チェーン」の終わりはparentIDにNULLがある場合です。

必要なのは、(たとえば) 12 の INBOXID を提供し、すべての親を返すことです。この例では、11
の INBOXID である 1 つのレコードを取得する必要があります。2 番目の例では、INBOXID を渡すことができるはずです。 9 個のうち、今回は INBOXID 8、7、および 1 の行を取得する

次のクエリである程度成功しました。

..しかし、もちろん、行のいずれかのすべての親を返します..おそらく、selectの1つのwhere句のような本当にばかげた単純なものであることは知っています..しかし、それを試してみました(つまり、開始点の inboxid)、何をする必要があるのか​​ よくわかりません???

どんな助けでも大歓迎です!!!!! デビッド。

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

tsql - 一意のURIスラッグの作成-これは再帰的なトリガーですか?(SQLサーバー)

これが私のテーブルです:

dbo.Posts

  • PostId(IDENTITY、PK)
  • 主題
  • UniqueUri(NVARCHAR(350)、NOT NULL)

「投稿」を作成するときは、(組み込み関数を使用して)空白のUniqueUriNEWID()を挿入します。

次に、「投稿」テーブルにトリガーがあります。

これは、SPROCを呼び出してUniqueUriを作成します。

SPROCには次のようなコードがあります。

投稿を1つだけ挿入しようとすると、1分以上かかることに気づきました。

これは再帰的なトリガー呼び出しであると推測できますか?

基本的に、投稿が作成/更新されるとき、私はユニークなURIを作成する必要があります(質問のために、スタックのように)。

私が考えることができる唯一の解決策は、UniqueUriと呼ばれる別のテーブルを作成することです。このテーブルには、PostId FKとUri、たとえば1-1しかなく、常に避けようとします。

次に、SPROCはそのテーブルを更新します。

他の提案/アイデアはありますか?

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

sql - SQL 再帰クエリ

私はテーブルカテゴリを持っています、

1) ID
2) カテゴリ
名 3) カテゴリマスター

1コンピュータ

0
2 ソフトウェア 1
3 マルチメディア 1
4 アニメーション 3
5 Health 0
6 Healthsub 5

そして私は次のように再帰クエリを作成しました:

コンピュータのすべてのサブカテゴリを取得するように、親カテゴリの結果を一番下に取得します

しかし、私はアニメーションからコンピュータへのようなボトムアップからの結果が欲しいです.誰かが私に正しい方向を提案してくれませんか.

前もって感謝します :)

0 投票する
4 に答える
5637 参照

sql - ツリー構造を表す Oracle テーブルからすべての子孫行を選択する

次のようなツリー構造を表す Oracle 10g のテーブル MYTYPE があります。

特定の ID の子孫である MYTYPE 内のすべての行を選択して、次のようなクエリを他の場所で作成できるようにしたいと考えています。

できればPL/SQLを使用せずに、子孫セットを構築する費用効率の高い方法は何ですか?

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

sql - 2 番目のテーブルに結合する再帰 CTE クエリのヘルプ

私の目的は、テーブル tbl を再帰し、そのテーブルを再帰しながら、別のテーブル tbl2 から国の略語 (存在する場合) を選択し、最終出力に含まれるそれらの結果を一緒に追加することです。

使用する例は、この投稿から取得します

tbl2 には tbl への外部キー 'tbl_id' があり、次のようになります。

*注: すべての国に略語があるわけではありません。

秘訣は、アジアのすべての国に、国に略語がない場合でも(たとえばインドのように)、少なくとも「AS」であるアジアの略語を表示することです。国に略語がある場合、結果は次のようになる必要があります: China:CN,AS

サブクエリを使用して部分的に機能していますが、インドでは略語に対して常に NULL が返されます。略語に戻る完全な再帰パスがない場合、null を返します。おそらく解決策は、略語テーブルで左外部結合を使用することですか? 私は何時間もの間、さまざまなバリエーションを試しましたが、サブクエリは可能な限り近いものです。

ところで、問題があればSQL Server 2005を使用しています

0 投票する
9 に答える
21140 参照

django - すべての子のDjango自己再帰的foreignkeyフィルタークエリ

自己参照する外部キー関係を持つこのモデルがあります。

今、私は人のマルチレベルの子供をすべて取得したいと考えています。Django クエリを作成するにはどうすればよいですか? 再帰関数のように振る舞う必要があります。