カテゴリの階層をモデル化する一連のデータがあります。ルート カテゴリには、一連の最上位カテゴリが含まれます。各最上位カテゴリには、一連のサブカテゴリが含まれています。
各サブカテゴリには一連の組織があります。特定の組織が複数のサブカテゴリに表示される場合があります。
この階層のリーフ ノードは組織です。組織は、複数のサブカテゴリに表示される可能性があります。
データは、次の 3 つの SQL テーブルに格納されます。
organizations
organization_id organization_name
1 Org A
2 Org B
3 Org C
4 Org D
5 Org E
6 Org F
categories
category_id parent_id category_name
0 NULL Top Level Category
1 0 First Category
2 0 Second Category
3 1 Sub Category A
4 1 Sub Category B
5 1 Sub Category C
6 2 Sub Category D
organizations_categories -- Maps organizations to sub_categories
organization_id category_id
1 3
2 3
2 6
3 4
4 4
5 4
6 5
6 4
7 6
8 6
特定のカテゴリまたはサブカテゴリに属するすべての固有の組織のリストを選択できるようにしたいと考えています。
私が現在行っている方法では、最初にどのサブカテゴリが要求されているかを把握し、次にコード内の各 sub_category をループして選択を実行し、そのカテゴリにマップされたすべての組織を取得します。各選択の結果は配列に追加されます。この配列には、組織が複数のサブカテゴリに表示されるたびに重複が含まれます。
このクラッジを、階層内のカテゴリの 1 つの ID を指定して個別の組織のリストを効率的に選択できるクエリに置き換えたいと思います。
PHPとMySQLを使用してこのソリューションを開発しています。
お時間とご提案をいただきありがとうございます。