私はテーブルを持っています:
id, number, name, display_name
0001, 1, Category 1, null
0001-0002, 2, Category 2, null
0001-0002-0003, 3, Category 3, null
id はカテゴリへのフル パスで、番号は最終的なカテゴリ番号です。パス内のすべてのカテゴリからの完全な名前を含めるように display_name を更新して、最終的には
0001, 1, Category 1, Category 1
0001-0002, 2, Category 2, Category 1 > Category 2
0001-0002-0003, 3, Category 3, Category 1 > Category 2 > Category 3
数値列を参照することでこれらをその場で生成できることはわかっていますが、このテーブルはそれほど頻繁に変更する必要はありませんが、多くの参照があります。一度だけデータを計算して保存しないのはもったいないようです。私はphpでこれを行うことができますが、遅いので、もっと良い方法があると思いますか? あるいは、私はこれについて完全に間違った方法で行っているだけかもしれません。表には冗長性がたくさんあることに気づきました...どんな意見でもうれしいです。
私はどこまでも
update categories set display=(select name from (select name from categories where number=1) t) where number=1
しかし、それは明らかに名前を表示名にコピーするだけです。