問題タブ [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 に答える
11440 参照

sql-server - 再帰クエリをサブクエリとして使用するには?

再帰クエリを何度も呼び出すクエリを作成する必要があります。

どうすればいいのかわかりませんでした。これは、カーソルを使用して実行時に SQL ステートメントを準備し、EXEC(mySQLstatement) を使用してすべてのカーソル FETCH NEXT で実行できると思います。

とにかく、これは良いアプローチではありません。

これが問題です (もちろんここでは簡略化しており、自分自身を表現するために必要な列のみを残しています): 顧客のツリー (階層) があり、顧客ごとにいくつかの連絡先が定義されています。

CUSTOMERS テーブルには、ID_CUSTOMER フィールドと ID_PARENT_CUSTOMER フィールドが含まれています。CUSTOMER_CONTACTS テーブルには、ID_CUSTOMER フィールドと ID_CONTACT フィールドが含まれています。

このクエリを使用すると (動作します)、顧客 308 のすべての連絡先と、そのサブ顧客のすべての連絡先を取得できます。

しかし、308だけでなく、すべての顧客に対して同じクエリを1回実行したいと考えています。これが、上記のステートメントを再利用して308の代わりに変数を使用できるように、カーソルを使用することを提案した理由です。

しかし、より良いクエリを提案できますか?

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

sql-server - SQL Serverツリー内の子から先祖までのすべてのノードを取得する方法は?

この回答では、すべてのサブノードを取得する方法と、ルート ノードへの参照を取得する方法を尋ねました。今、私は逆も必要であることに気づきました:

すべてのノードとすべての親が必要です。

したがって、この単純なツリーでは:

私はを頂きたい

(順番は関係ありません)

これは逆を取得するためのクエリでした (親からすべての子を取得します)。私はそれで遊んでみましたが、解決策を見つけることができませんでした。提案していただけますか?

0 投票する
6 に答える
8063 参照

php - MySQL 再帰ツリー検索

合計 9 レベルの深さの名前のツリーを持つデータベースがあり、ブランチの任意のポイントからツリーのシグナル ブランチを検索できる必要があります。

データベース:

木:

例えば:

ユーザー「bob」から「j」を検索すると、「joe」と「jim」のみが取得されます。「j」フォームを「leo」で検索すると、「jim」しか表示されません。

これを行う簡単な方法は考えられないので、助けていただければ幸いです。

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

sql-server - SQL Server2008XQueryを使用したXMLツリーのフラットテキストへの変換

数式ツリーを表すXMLデータがいくつかあり、これをフラットな数式に変換したいと思います。単純に聞こえますが、SQL ServerのXQueryの制限により、現在、成功できませんでした(再帰関数がない、「不均一な」結果の問題など)。

式は、任意のネストの深さにすることができます。これがサンプルです(データは後でテーブルのxml列にありますが、ここでテストするには十分です):

必要な結果は次のようになります(空白は重要ではありません):

誰かがSQLServer2008(R2)でXQueryをマスターして、この変換を実行するのに十分ですか?

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

xml - XSLTを使用してXMLを並べ替える

カタログツリーを説明するxmlがあります。子ノードはいくつでも持つことができます。次に例を示します。

カテゴリ名とParentCategoryで並べ替えることができる必要があります。すべての親カテゴリがxmlの最初に表示され、「リーフカテゴリ」が最後に表示されます。このサンプルでは、​​xmlはすでにソートされています。

上記のxmlは、ツリーとして表される場合、次のようになります 。1532
-16115
--16116
--16126
-16131
--16132
--16136
--16139
--16144
--16195

このように並べ替え て ほしい
1532-16115-16131
--16116
--16126
--16132
--16136
--16139
--16144
--16195

子要素のいくつかのレベルにすることができます(この場合は3レベルのツリーのみ)。すべてのレベル1要素を最初にxmlに入れ、次にすべてのレベル2要素、次にすべてのレベル3要素などを配置します。

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

php - PHP で Mysql を再帰データとして使用する Navmenu - 3 つの異なるテーブルを使用する

私は自分の Web ページで 3 つのレベルの分類を行いました。各記事はSECTION→CATEGORY→SUBCATEGORYの順で進んでいきます。section テーブルには、section_id フィールドと sectionname フィールドがあります。カテゴリ テーブルには、category_id、section_id、カテゴリ名があります。subcategory テーブルには、subcategory_id、category_id、section_id、subcategoryname があります。

Web サイトに記事を追加するときに、3 つの選択ドロップダウンを備えた動的なドロップダウン メニューを作成しました (この記事をスタイルで保存する場所として)。それは働いています。

このセクション、カテゴリ、およびサブカテゴリを順不同のリストに表示したいのですが、わかりません。私が求めているもの:

どんな助けでもとても幸せです。

ありがとう、

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

php - PHP の再帰的なディレクトリ ハンドルの問題

getSettings() は、ディレクトリ内の 1 つの settings.php ファイルのみを読み取って出力するようです。すべての settings.php ファイルの内容を読み取って出力するにはどうすればよいですか?

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

sql-server - 相関集計によるサブツリーの構築

あいまいなタイトルで申し訳ありません。問題をどのように要約すればよいか、私には思いつきませんでした。階層テーブル (例: ID int, ParentID int) があり、 のサブツリーを生成する必要がありIDます。これは、再帰的な CTE を使用して簡単に実行できます。難しいのは、ノードごとに、一連の対応する値の実行中のビット単位の OR を計算し、その結果が親ノードの同じ値になるビット OR を計算する必要があることです。これは、すべてのノードが親のビットマスクを継承し、独自の追加ビットを設定できることを意味します。CTE のアンカー メンバーでこの値を計算するには、以前の質問OUTER APPLYで述べた手法を使用します。残念ながら、CTE の再帰部分で同じように計算することはできません。これは、CTE の使用と集計が許可されていないためです。SUM

私がやりたいことをするためにこれを再構築する方法はありますか?

編集

問題を概念化するのに役立つ場合: 階層はディレクトリ構造によく似ており、ビットマスクは親フォルダーから継承されるアクセス許可に似ています。

サンプルデータ

1 の場合@ID、クエリは次のように返されると思います。

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

sql - SQL Serverでこのクエリ(PostgreSQL)を書き直す方法は?

数日前、私は1、2、3度の接続について質問しました。質問リンクと@Snoopyは、私のすべての問題を解決できる記事リンクを提供しました。記事リンク

この記事を注意深く調べましたが、SQLServerでWithRecursiveクエリを使用できませんでした。

PostgreSQLクエリ:

あるいは単に

私が言ったように、CTEを使用してSQLServerで再帰クエリを作成する方法がわかりません。検索してこのページを調べましたが、それでも運がありません。クエリを実行できませんでした。

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

sql - SQL Server 2008: 階層が厳密でない再帰クエリ

私は大規模な多国籍企業を扱っています。子会社の所有権を示すテーブル (oldtir) があります。この問題のフィールドは次のとおりです。

  • cID - このテーブルの PK
  • dpm_sub - 子会社の FK
  • dpm_pco - 親会社の FK
  • year - これがリレーションシップである年 (時間の経過とともに変化するため)

他にもフィールドはありますが、この問題には関係ありません。(なお、トップレベルの会社を具体的に示す記録がないため、子会社として表示されないようにすることで、それらがどれであるかを把握する必要があります。)

以下のクエリを書きました。

メッセージ 530 で失敗します:「ステートメントが完了する前に最大再帰 100 を使い果たしました。」

問題は、テーブル内の関係が厳密に階層化されていないことだと思います。具体的には、1 つの子会社を複数の会社が所有することができます。また、A が B と C の一部を所有し、B も C の一部を所有しているという状況さえあり得ます (他のフィールドの 1 つは所有割合を示します)。

当分の間、トラック レベルにフィールドを追加し、数レベル後に任意に停止することで問題を解決しました。しかし、レベルの最大数がわからないので、これは私には不親切です。

これを一般的に行う方法はありますか?

ありがとう、タマル