問題タブ [nested-sets]

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 に答える
553 参照

regex - 最初と最後の出現を除いて、グループ内のすべての文字に一致します

私が要求すると言う

私のブラウザで。ページ名だけでなく、親、子も抽出したい。これが私が現在使用している正規表現です。URLリクエストに含まれる子の数に制限はありません。当面の間、ページ名は常に最後になり、省略されることはありません。

これで遊ぶほど、このソリューションがいかに不格好であるかを感じます。これは、ASPクラシックで開発している小さなCMS用です(:()。MVCルーティングパスのようなものです。ただし、URL要求に基づいてコントローラーと関数を呼び出す代わりに、階層を下って移動し、データベース内の適切なページ。データベースはネストされたセットモデルを使用しており、子ごとに一意のページ名でリンクされています。

分割関数を使用して/区切り文字で分割しようとしましたが、ネストされているため、非常に多くの分割ステートメントが一緒になっていて、非常に読みにくくなっていることがわかりました。

とにかく、文字列から親、子、およびページ名を解析する効率的な方法が必要です。誰かが別の解決策を提供してもらえますか?

正直なところ、正規表現が私の問題の最善の解決策であるかどうかさえわかりません。

ありがとうございました。

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

jquery - jquery ドラッグ アンド ドロップ ツリー プラグインのまともな実装を探しています

PHP と MySQL を使用して再帰的なメニューを作成しました。適切な Jquery プラグイン (またはチュートリアル) を探しています - ドラッグ アンド ドロップに基づいてメニューの並べ替えを実装します。誰か知っていますか?

ところで。<li>関連する PHP を実行できます。ネストされた一連のs でドラッグ アンド ドロップ要素<ul>を送信し、ajax リクエストを送信できるものが必要なだけです。

PS少し調べてみたところ、機能しないプラグインへのリンクがたくさんあるようです...これが私の不運なのか、単に見た目が悪いのかよくわかりません...

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

mysql - ネストされたセットにノードをトランザクションセーフに挿入しますか?

ネストされたセットの形式で mysql に階層データを格納しています。

次の一連の SQL ステートメントを使用して、新しいノードを挿入します。

これは機能しますが、多数のノードが (近くで) 同時に追加されると、問題が発生する可能性があります。

データが破損しないようにする最善の方法は何ですか (ストアド プロシージャはオプションではありません)。この sql をトランザクションに含めるだけで十分ですか? トランザクションとテーブル ロックを使用する必要がありますか?

ありがとう

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

ruby - Rubyでオブジェクトの配列からネストされたオブジェクトの配列を抽出する高速な方法は何ですか?>

要素の配列があり、各要素にはプロパティ :image があります。

画像の配列が欲しいので、これを実現するための最も迅速で安価な方法は何ですか。配列を繰り返し処理し、各要素を新しい配列にプッシュするだけですか。次のようになります。

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

ruby-on-rails - これらの named_scopes が重複した INNER JOIN を引き起こしているのはなぜですか?

awesome_nested_setプラグインを使用して階層組織の権限を追跡するために使用しているモデルがあります。named_scope2 つの がチェーンされていると、重複が発生するという問題が発生していINNER JOINます。

2 つnamed_scopeの はAccountモデル内にあり、ユーザーおよびグループによってアカウントをフィルター処理するために使用されます。

これらは両方ともnamed_scopejoin する必要がありmembershipsますが、重複せずにそれを行うことができるべきではありませんか? それらが連鎖すると、mysql は次のエラーで爆発します。

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

sql - 結合テーブルとネストされたセットの両方を組み込んだMySQLクエリ

、、、の3つのテーブルがcategoriesありtagsますtaggings。カテゴリテーブルは、関連する列id、、、、およびを使用して、ネストされたセットの形式でまとめられます。タグにはとがあります。タグ付けにはとがあり、これはを参照します。lftrgtparent_ididnametag_idtaggable_idcategories.id

可能であれば、フィールドに返される1つのクエリ、たとえばtag_list、カテゴリとそのすべての祖先のタグを含む文字列が必要です。したがって、次のスキーマが与えられます。

カテゴリ

タグ

タグ付け

SELECT ??? FROM categoriesクエリが返されるようにしたい:

背景情報:私はRailsを実行しており、検索にはThinking Sphinxを使用し、ネストにはawesome_nested_setを使用しています。と呼ばれるテーブルがありcategories、多くtagshas_many_through関係があります。

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

sql - 階層データのビューを最適化する

現在、ネストされたセット モデルを使用して、会社の組織情報を格納するテーブルから、従業員のすべての直接および間接のマネージャーをクエリするための自己結合を含むクエリがあります。この SQL 表記では、コロンが前に付いている数字 (例: :1) は変数です。

結合条件または where 句のいずれかに追加することで、従業員のnレベル上のマネージャーの ID のみを簡単に返すことができます(副次的な質問: どちらが速いですか?)。parent.depth = node.depth - :2

問題:このクエリをビューに変換しようとしていますが、うまくいきません。問題は、ほとんどまたはすべての変数がクエリの結合条件に含まれていることです。私の現在の最善の計画は、これらの部分を列に分割して、ビューをクエリするときに where 句を使用できるようにすることです。たとえば、次のようになります。

従業員のnMgrRelativeAltitudeレベル上のマネージャーの ID を見つけることができる列を発明しなければならなかったことがわかりますが、それはほとんど最大の問題ではありません。SQL Server は結合条件で指定されたとおりに完全な結合を実行し、where 句を使用して結合を制限するのではなく、where 句でフィルター処理するように見えるため、これにより深刻なパフォーマンスの問題が発生するのではないかと心配しています。 ビューを作成するより良い方法はありますか? これをクエリとして残し、ビューの作成を忘れるべきですか? ビューではなくストアド プロシージャにすることで、何かメリットがありますか?

そして、「時期尚早の最適化は悪だ」とは言わないでください...それは時期尚早ではありません。私が置き換えようとしている実装は、従業員を直接および間接のマネージャーの 1 人に関連付けるレコードを持っていた粗末な隣接リストのようなものを使用していました... 最悪の場合、O(n^2) レコードであり、予想通り重大なパフォーマンスの問題に遭遇しました。階層には約 300,000 人以上の従業員がいました。私の新しいネストされたセットの実装は、この1つのクエリを除いて、これらのパフォーマンスの問題を軽減します...select *提案されたビューで実行すると、結果は置き換えようとしている古いテーブルとほぼ同じになります。とても。

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

ruby-on-rails - rails awesome Nested set すべての猫、サブ猫、サブサブ猫を表示

この投稿を見ました

Ruby on Rails - 素晴らしいネストされたセットのプラグイン

しかし、ノードを使用せずに同じことを行う方法を知りたいですか? また、コード自体でこのノードが正確に何をしているのか疑問に思っています。

私のカテゴリ ビュー フォルダーには、_category.html.erb と _full_categores_list.html.erb があります。

_category.html.erb には、上記のリンクと同じ方法である次のコードがあります。

_full_categories_list.html.erb には次のコードがあります。

このコードは完全に正常に動作します。ただし、これらのファイルの複製を作成したいと仮定して、_full_categories_list.html.erb の代わりに _half_categories_list.html.erb を作成したとします。これは、コードで少し異なることを行う可能性があります。

上記の _full_categories_list.html.erb で使用したものと同様のコードを使用すると、_category.html.erb を呼び出し続けます。

_half_categories_list.html.erb と _category.html.erb の代わりに _half_category.html.erb のようなファイルを使用して、すべての猫、サブ猫、およびサブサブ猫を表示するにはどうすればよいですか

ハーフ カテゴリとフル カテゴリは、ファイルごとに異なることを行っていることを示すための単なる名前です。これが理にかなっていることを願っています。上記のリンクのコードの機能を基本的に複製したいのですが、_half_category.html.erb ファイルに別の機能を入れようとしているため、_category.html.erb の代わりに _half_category.html.erb を使用します。

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

sql - SQLを使用してデータベース内の破損したMPTTツリー(ネストされたセット)を修復するにはどうすればよいですか?

lftrghtおよびparent_id列を使用してMySQLに保存された100,000を超えるレコードのMPTTツリーがあります。これで、親IDはそのままで、左/右の値が破損しました。アプリケーション層で修復するには、大量のクエリが必要になります。データベースに負担をかけ、SQLのみを使用して左右の値を再計算させる良い方法はありますか?


明確にするために、隣接するレコードのIDではなく、ネストされたセットの数値のlft/rght値を再計算する必要があります。

ネストされたセット
(ソース:mysql.com

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

sql - SQL の複雑な集計関数と階層構造

SQL データベースに任意の深さのツリー構造を格納したい (MySQL ですが、DBMS 固有の機能は避けたい)。ここで、次のように各ノードの値Nを計算します。

  • まず、葉である現在のノードのすべての(直接の)子の特定の列の合計を計算します(つまり、子を持たない)
  • 次に、残りの子、つまり子を持つ子のそれぞれの値Nの最大値を計算します。
  • 最後に、最初の 2 つのステップの結果を加算して、現在のノードの値Nを取得します。

明らかに、これには再帰が含まれるため、ネストされたセットがこのシナリオの選択の表現のようです。しかし、上記の計算を SQL クエリとして定式化する方法がわかりませんでした。すべての子孫の SUM() または MAX() を取得するのは簡単ですが、集計関数を組み合わせる方法が問題を非常に複雑にします。誰にも解決策がありますか?