問題タブ [adjacency-list-model]

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

php - 隣接モデルからのネストされていないデータ配列のソート

隣接モデルを使用してトピックの階層を構築するデータベース テーブルから取得したデータの配列があります。各レコードには次のフィールドが含まれます。

  • 「id」 - 一意の AI ID。
  • 'name' - 表示名。
  • 'parent_id' - 親トピックの ID (ルート トピックの場合は null にすることができます)

配列は、ネストされていないデータベースから取得され、予想どおり id でソートされます。「id」フィールドはランダムで自由であり、有用な順序を生成するために信頼することはできません。parent_id を使用して配列を並べ替え、正しい隣接順序になるようにする方法を探していますが、最終結果がサブ配列にネストされることはありません。リストは次のようになります。

  • ルートトピックA
  • ATopic1
  • ATopic2
  • Child1ofATopic2
  • Child2ofATopic2
  • ATopic3
  • RootTopicB
  • BTopic1
  • BTopic2

ヘルプや例へのポインタ (別の言語であっても) をいただければ幸いです。

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

mysql - サイト階層の隣接リスト モデル、この特定の順序ですべてのページを取得する方法は?

私は管理をしなければなりません。私は SQL の達人ではありません。おそらく、このクエリは本当に単純ですが、うまく書けません。基本的に、すべてのページは隣接リスト モデルを使用して配置されます (私はディープも追跡しています)。

位置は同じ親の中で一意であることに注意してください。

私が達成しようとしているのは、親と位置で並べ替えることですが、親カテゴリはその子の直前にリストする必要があります。これは明らかであり、機能しません。

結果は最初のテーブルです。必要なものは次のとおりです。

再帰をサポートしていないMySQLでこれは可能ですか?

0 投票する
0 に答える
1337 参照

mysql - 完全なツリーの親を持つ MySql 隣接リスト

このチュートリアルに従って、MySql で隣接リスト モデルを使用したいと考えて います: クエリを使用した MySQL での階層データの管理:

私の質問は、つまり、クエリが返された場合:

この結果データ + リーフ ノード ID (category_id) の追加列を取得するようにクエリを変更する方法は?

1 .ID = 電子機器の ID

2 .ID = TELEVISIONS の ID

3 .ID = TUBE の ID

完全なリスト ツリーとスタンドアロンの親を表示し、それらの ID を表示したい...

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

php - codeigniter のデータベースからのマルチレベル メニュー

データベースにすべてのデータベース カテゴリを含むテーブルがあり、これをマルチレベル メニューに変換する必要があります。テーブル構造は次のとおりです。

オンライン チュートリアル (ここ) から採用した関数と何時間もの調査を使用して、結果のコードはトップ レベル (親 ID が null のもの) のみを表示します。sortMenu 関数に問題があると思いますが、解決できないようです。

データを抽出するモデル関数は次のとおりです。

次に示すのは、インデックス関数からプライベート関数を呼び出すコントローラーです。次に、プライベート create_list 関数を呼び出します。

これは私を完全に困惑させました:S 誰かアイデアはありますか?

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

mysql - 親が存在しない場合のmysqlの自己結合の修正結果の順序

Taxonomyは、組織の構造に関係するすべてのものを保持するという名前のテーブルを持っています。学校の例としてテーブルは次のようになります

4種類あり、一番上が学年(2014-2015)など。その下の学科、その下の学年 (grade1、2、3 など) の下の複数のクラス。

これを取得する必要があるときは、次のような自己結合クエリを実行します。

私が得る非常に多くのヌルを除いて、それは正常に動作します! クエリの結果の例 mysqlの結果

ご覧のとおり、クラスは年の下のフィールドで正しく表示されます。

まだ最初の行では、年は Class フィールドの下にあります (3 セルをシフト)。

null値がシフトされるたびに。どうすれば修正できますか?

どうもありがとう

編集

typeAdjacency List Model のバリエーションとして、パス全体を取得しなくても任意の行のレベルを識別できるように、名前付きの追加の列を追加しました。

テーブルは学校の構造を保持します。例

毎年新しい年に、彼らは「2014-2015」という A Year の例を作成し、今年中に学校のさまざまな部門「アメリカの卒業証書、高校、プレイスクールなど」を作成します。 ..

これらの入力手段

別のテーブルが学生をクラスノードにリンクした後、別のテーブルリンクがクラスの投稿などにリンクします。

したがって、このテーブルは基本的に学校の構造を保持します。年、学科、学年は学校のユーザーの組織のためにのみ存在するため、「必要な名前以外のデータはありません」と、すべてを 1 つのテーブルにまとめることにしました。

それは実際に私にとって非常にうまく機能しています!(私たちはすべての部門、学生、クラスで 4 年間過ごし、ユーザー/クラスにリンクされた 100,000 件を超える投稿、および 10,000 件を超えるユーザーとこれまでのところスムーズに機能しています!)

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

mysql - MySQL階層データの隣接リストモデルとネストセットモデル?

MySQL で階層データを操作するには、次の 2 つの方法があります。

  1. 隣接リスト モデル
  2. 入れ子集合モデル

隣接リスト モデルの主な問題は、階層のパスを取得するためにノードごとに 1 つのクエリを実行する必要があることです。

ネストされたセット モデルでは、この問題は存在しませんが、追加されたノードごとに、他のすべての左右の値に MySQL UPDATE を与える必要あります

私の階層データは、e コマースの製品カテゴリなどの静的データではありません。ユーザーを階層順に常時登録しています。

私のアプリケーションでは、多くの定数ユーザー登録がありますが、階層内の最初のノードに到達するまでの階層パスも取得する必要があります。

私の状況を分析すると、2 つの選択肢のどちらが私のアプリケーションに最適でしょうか?

0 投票する
3 に答える
1382 参照

php - MySQL: サブツリーのすべての葉ノードを見つける

私は、mySQL テーブルに格納されたカテゴリのツリー構造category_idparent_id関係を持っています。Parent_id = Nullルートノードに相当します。

私がやろうとしているのは、すべてのリーフ ノードをフェッチして、ノードの category_id を指定することです。この記事をフォローしました。以下のクエリを使用してすべてのリーフ ノードを取得する方法について説明します。

しかし、サブツリーのリーフ ノードを取得しようとしています。例えば:

ここに画像の説明を入力

上記の構造でノード 3 を指定すると、結果は 9、10、7、11、12、13 になります。

私はまた、ここで与えられた解決策を試しました: adjacency model 、与えられた id return the leaf nodes。しかし、私は望ましい結果を得ることができません。

解決策を見つけるのを手伝ってもらえますか?

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

laravel - ユーザー タイプの隣接リスト モデル

データベースに必要なユーザー タイプがかなり多くありますが、これまでのところ、多数のテーブルを必要としない唯一の適切なオプションは、隣接リスト モデルを使用することです。基本的に、私のユーザーはまず、ビジネス、個人、管理者のタイプに分けられます。そこからは次のようになります。
ここに画像の説明を入力

注: 現在、3 レベルのユーザー タイプがありますが、これはビジネス ニーズに応じて変更される可能性があります。

usersすべてのユーザーは、電子メール、パスワード、名、姓などの詳細を保持する共通のテーブルを共有しています。すべてのビジネス ユーザーは、businessesビジネス固有のデータを格納する個別のテーブルを持っています。すべてのbusinessesユーザーが同じフィールドを共有しているわけではありませんが、異なるタイプのユーザーごとにいくつかのフィールドしか必要ないため、すべてのフィールドを 1 つのテーブルに格納し、使用していないフィールドには NULL を格納するのが最善の方法であると考えました。使用しないでください。

今、私はこの単純なシナリオを持っています。すべてのユーザーにユーザー プロファイル ページがあります。ビジネス ユーザーにもビジネス プロファイル ページがあります。私のビジネス技術者には、彼ら専用の別のページが必要です。コンピュータ技術者がログインするとします。プロファイル ページ、ビジネス プロファイル ページ、および技術者ダッシュボードへのリンクを表示できるようにしたいと考えています。

ユーザータイプを取得するために、「子」または「親」を取得できるようにモデルをセットアップしました。私が言うなら:

技術者をチェックする (技術者ダッシュボードへのリンクを提供する) 方法と、ビジネスもチェックする (ビジネス プロファイル ページのリンクを提供する) 方法を簡単に実装するにはどうすればよいですか?