私Taxonomy
は、組織の構造に関係するすべてのものを保持するという名前のテーブルを持っています。学校の例としてテーブルは次のようになります
id | name | type | parent
1 | 2014 | year | null
2 | igcse| dep | 1
3 | kg1 | grade| 2
4 | c1 | class| 3
4種類あり、一番上が学年(2014-2015)など。その下の学科、その下の学年 (grade1、2、3 など) の下の複数のクラス。
これを取得する必要があるときは、次のような自己結合クエリを実行します。
SELECT y.name AS year,
d.name AS dep,
g.name AS grade,
c.name AS class,
e.name AS exam
FROM `taxonomys` e
left JOIN `taxonomys` c on c.id = e.parent
left JOIN `taxonomys` g on g.id = c.parent
left JOIN `taxonomys` d on d.id = g.parent
left JOIN `taxonomys` y on y.id = d.parent
where c.type in ('grade','department','class','year')
私が得る非常に多くのヌルを除いて、それは正常に動作します! クエリの結果の例
ご覧のとおり、クラスは年の下のフィールドで正しく表示されます。
まだ最初の行では、年は Class フィールドの下にあります (3 セルをシフト)。
null値がシフトされるたびに。どうすれば修正できますか?
どうもありがとう
編集
What is this table ?
type
Adjacency List Model のバリエーションとして、パス全体を取得しなくても任意の行のレベルを識別できるように、名前付きの追加の列を追加しました。
テーブルは学校の構造を保持します。例
毎年新しい年に、彼らは「2014-2015」という A Year の例を作成し、今年中に学校のさまざまな部門「アメリカの卒業証書、高校、プレイスクールなど」を作成します。 ..
例
id name type parent
1 2014-2015 year null
2 highschool dep. 1
3 grade 10 grade 2
4 grade 11 grade 2
5 class a class 3
6 class b class 3
これらの入力手段
2014-2015
|__Highschool
|__ grade 10
|__ class a
|__ class b
|__ grade 11
別のテーブルが学生をクラスノードにリンクした後、別のテーブルリンクがクラスの投稿などにリンクします。
したがって、このテーブルは基本的に学校の構造を保持します。年、学科、学年は学校のユーザーの組織のためにのみ存在するため、「必要な名前以外のデータはありません」と、すべてを 1 つのテーブルにまとめることにしました。
Why did you build it in this a very very very bad/anti-pattern design ?
それは実際に私にとって非常にうまく機能しています!(私たちはすべての部門、学生、クラスで 4 年間過ごし、ユーザー/クラスにリンクされた 100,000 件を超える投稿、および 10,000 件を超えるユーザーとこれまでのところスムーズに機能しています!)