問題タブ [hierarchical-data]
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-server - SQL-Serverで循環関係を回避する方法は?
私は自己関連のテーブルを作成しています:
テーブルItem
列:
ItemId int-PK;
金額-nullではありません。価格マネー-アイテムの祖先の金額に従って値を取得するUDFを使用して計算された列。
ParentItemId int-null許容、このテーブル内の別のItemIdへの参照。
ループを回避する必要があります。つまり、兄弟は祖先の祖先になることはできません。つまり、ItemId = 2 ParentItemId = 1の場合、ItemId 1 ParentItemId=2は許可されません。
この状況でのベストプラクティスはどうあるべきかわかりません。UDFなどからスカラー値を取得するCKを追加する必要があると思います。
編集: 別のオプションは、INSTEAD OFトリガーを作成し、1つのトランザクションにParentItemIdフィールドの更新を入れ、トランザクションのキャンセルに失敗した場合は@@ RowIdentityからPriceフィールドを選択することですが、UDF検証を希望します。
どんなアイデアでも大歓迎です。
mysql - 階層データに関する質問
http://articles.sitepoint.com/article/hierarchical-data-database/2「データベースへの階層データの保存」に関する次の記事を読んでいます。
これはこれらの構造について話しています。http://sitepointstatic.com/graphics/sitepoint_numbering.gifおよびhttp://sitepointstatic.com/graphics/table02.gif
以下の文章がわかりません。これらはどういう意味ですか。
「ノードの子から始めるたびに、そのノードの正しい値をスタックに追加します。」
と
「ノードの表示が終了したら、スタックから正しい値を削除します。スタック内の要素を数えると、現在のノードのレベルが得られます。」
可能であれば、誰かがこれらをより簡単な方法で説明してくれることを願っています。
ツリー構造を示すために、子は親よりもわずかにインデントする必要があります。これは、正しい値のスタックを保持することで実現できます。ノードの子から開始するたびに、そのノードの正しい値をスタックに追加します。そのノードのすべての子には、親の正しい値よりも小さい正しい値があることがわかっているため、現在のノードの正しい値とスタック内の最後の正しいノードを比較することで、まだ正しいかどうかを確認できます。その親の子を表示します。ノードの表示が終了したら、その正しい値をスタックから削除します。スタック内の要素をカウントすると、現在のノードのレベルが得られます。
linq - 階層構造の反復と LINQ
クラスがあると仮定します
ご覧のとおり、通常のように、各メニュー項目に子項目を含めることができます。私の仕事は、このリストの各項目を繰り返し処理し、何らかのアクションを適用することです。古典的な決定は、再帰的な繰り返しを書くことです。しかし、LINQ が私のタスクをより簡単にすることができるかどうかは興味深いですか? たとえば、オブジェクトのフラット リストを取得できるクエリを記述でき、これを foreach で簡単に反復できるとします。しかし、この方法での私の試みはまだ成功していません。だからどんな助けでも大歓迎です!
php - 2 つのテーブルを持つ隣接リスト モデル
したがって、私の問題は2つの質問に要約されると思います。
パフォーマンスを考慮しながら隣接リスト モデル アプローチを使用してツリーが MySQL (2 つのテーブル間) に格納されている場合、PHP でトラバース可能なツリー構造を構築するにはどうすればよいですか?
トラバーサル コードを複製したり、if/else ステートメントや switch ステートメントでロジックを散らかしたりせずに、必要な形式でツリーを表示するための保守可能なアプローチは何ですか?
詳細は以下のとおりです。
Zend フレームワークを使用しています。
問診票を扱っています。これは、質問と質問グループの 2 つの別個のテーブル間の MySQL データベースに保存されます。各テーブルは、適切な Zend_Db_Table_* クラスを拡張します。階層は、隣接リスト モデル アプローチを使用して表されます。
私が直面している問題は、ツリー構造を RDBMS に詰め込んでいるという事実が原因である可能性が高いことを認識しているため、代替手段を受け入れています。ただし、アンケートの回答者とその回答も保存しているため、別のアプローチでそれをサポートする必要があります。
アンケートは、さまざまな HTML 形式で表示する必要があります。
- 回答を入力するためのフォームとして (Zend_Form を使用)
- 質問別またはグループ別の回答を表示するためのリンクとして、質問 (およびいくつかのグループ) を含む順序付けられた (ネストされた) リストとして。
- 各質問に回答が追加された順序付きリスト (ネストされた) として。
質問はリーフ ノードであり、question_groups には他の question_group や質問を含めることができます。組み合わせると、処理および表示する行が 100 行を少し超えます。
現在、再帰を使用してすべての処理を行い、question_group の子 (2 つのテーブル間で UNION を実行するクエリ: QuestionGroup::getChildren($id)) を取得するビュー ヘルパーがあります。さらに、質問の回答とともにアンケートを表示する場合、各質問に対する回答者とその回答を取得するために、追加の 2 つのクエリが必要です。
ページの読み込み時間はそれほど長くはありませんが、このアプローチは間違っているように感じます. ほとんどすべてのノードに対して再帰と複数のデータベース クエリを実行しても、内部が非常に暖かくぼんやりしているとは感じません。
UNION から返された完全なツリー配列に対して再帰のない方法と再帰的な方法を試し、トラバースして表示する階層配列を構築しました。ただし、グループと質問が別々のテーブルに格納されているため、ノード ID が重複しているため、これはうまくいかないようです。多分私はそこに何かが欠けている...
現在、上記の形式でツリーを表示するロジックは非常に混乱しています。トラバーサル ロジックをいたるところに複製することは避けたいと思います。ただし、いたるところにある条件は、保守が最も容易なコードを生成するものでもありません。私はビジター、デコレータ、およびいくつかの PHP SPL イテレータについて読みましたが、Zend_Db_Table、Zend_Db_Table_Rowset、および Zend_Db_Table_Row を拡張するクラスとすべてがどのように連携するかについては、まだよくわかりません。特に、データベースから階層を構築するという以前の問題を解決していないためです。新しい表示形式を追加する (または既存のものを変更する) のは、いくらか簡単にできるとよいでしょう。
python - Python Hierarchical QcomboBox:クリーンアップリスト
階層的な2つのコンボボックスがあります。最初のコンボボックスには、customerNamesのリストが表示されます。つまり、MySQLデータベースとは異なる会社です。各顧客は異なる都市に支店を持っています。
次に、combo-box1オプションリストから顧客名({Aldi、Meyer、Carrefour、WalMart}など)を選択すると、その特定の顧客の都市/支店のリストが自動的にcombo-box2に表示されます。そのようなもの、例えば:
問題は、最終的に支店の数が少なくなる別の顧客を再度選択したときに発生します。
これは、combo2を実行する関数です。この関数は、combo1のリストからcustomerNameが選択されるたびに呼び出されます。
そして、その顧客に属するリスト都市の各名前を追加する関数:
delを使用してリストの以前のコンテンツをクリーンアップしようとしましたが、それでも同じ動作が得られます。
これはQtまたはPython関連の問題ですか?それとも、ここで欠けている部分がありますか?
すべてのコメントと提案は高く評価されています。
mysql - CakePHP の Tree Behavior を使用して、1 つのテーブルに複数のツリーを含める
CakePHP アプリでフラット リストをツリーに変換していますが、この機能を持つ既存の動作があることがわかりました。私のテーブルは 1 つの巨大なツリーではなく、ユーザーが生成した多くのツリーで構成されています。基本的に、各ユーザーは独自のフォルダー構造を作成できます。ただし、ツリー ビヘイビアーは、1 つの巨大なツリーであるかのように、テーブル全体の lft/rght 値のみを追跡するようです。したがって、新しいフォルダーまたはサブフォルダーが追加された場合は、テーブル全体を更新する必要があります。
Tree Behavior が実際にどのように機能するかについて私は間違っていますか? そうでない場合、これを回避する方法はありますか?
参照リンク:
asp.net-mvc - jQuery:ソート可能なネストされたリスト?
親子のページング構造を持つWebサイトを構築しています。ウェブサイトの構造を管理するための便利な方法を探しています。
- ページを並べ替え可能にしたい
生成されたサイトマップ(ネストされたUL)でjQueryの並べ替え可能なコードをリリースすると、正しく機能しません...
本当に重要なのは、現在のULの外部でソートできないようにすることです。助言がありますか?
前もって感謝します。
database - リレーショナル データベースでの階層フィルタリング
私のプログラムには、すべて特定のカテゴリに属するアイテムがたくさんあります。そのカテゴリーに属する商品だけを返品したいです。問題は、カテゴリが親カテゴリを持つことができることです。たとえば、子カテゴリ「果物」を持つ子カテゴリ「食品」を持つカテゴリ「スタッフ」があるとします。リンゴ、ナシ、チョコレート、コンピューターのアイテムがあります。
すべての果物を表示したい場合は、"WHERE item.category = FRUIT_ID" 句を使用してデータベース クエリを実行するのは簡単です。ただし、すべての食品を含めたい場合は、そこに果物を入れる方法も必要です。
Oracle などの一部のデータベースには再帰クエリの概念があり、それが適切なソリューションである可能性があることは知っていますが、階層データの経験があまりなく、一般的な提案を探しています。データベース スキーマを無制限に制御できると仮定すると、カテゴリ ツリーは最大 5 カテゴリの深さしかなく、可能な限り途方もなく高速である必要があります。
sql - トリッキーなSQLSELECT問題(MySQL)
このテーブルを持っている(申し訳ありませんが、ここでまともなレイアウトを取得することはできません):
テーブル内の行を、他の行を選択するためのフィルター/マスクとして使用しています。
したがって、ユーザーはすでに次の行を選択しています。
ここで、PD=30の行がこれらの以前の選択に適合するかどうかを調べたいと思います。
PD = 10、Text = Aproducerは、Mask_Producerは "Aprod"でなければならないことを示しています(Mask_DepとMask_Diamは星によって何でも許可されています)
PD = 20、Text = Aは、Mask_Producerが "Aprod"であり、Mask_Depが10または20であり、Mask_Diamが30または40(またはスター)である必要があることを示します。
結果を上の表の6行目と7行目にしたいと思います。
次に、2000行と20個のMask_xxフィールドを持つこの例を想像してみてください。
これを行うには、IN、LEFT JOIN、JOIN、および一時テーブルなどのSQLを考えていますが、複雑になりすぎている可能性があります。
apache-flex - AdvancedDataGrid hell:行のグループ化に関するデータ
親行と子行の列にデータを表示する階層グリッドが必要です。
ADGを機能させようとしましたが、デフォルトでは、親行のグループ化列を除くすべての列が空白になっています。アイテムレンダラーを使用してデータをプッシュできると思います。
私のブロッキングの問題は、私のグループ化がまったく機能していないように見えることです。dataProvider = MyArrayCollectionを設定するとデータが表示されますが、
動作しません:データが表示されません。明示的な「子名」列を作成しようとしましたが、作成しませんでした。HierarchicalCollectionViewでラップしようとしましたが、それも機能しません。基本的なグループ化のチュートリアルを確認しましたが、コードとデータはパターンに従っているように見えます。
何か案は?