February 2022
Intermediate to advanced
560 pages
8h 5m
Japanese
本章では、データ内で生じる可能性のある階層関係を表すためのレシピを紹介します。階層的なデータを扱う際には、データの保存よりも階層としてのデータの取得や表示の方が難しいのが普通です。
MySQLに再帰CTEが追加されてからまだ数年しか経っていませんが、MySQLで利用できるようになったことで、実質的にすべてのRDBMSで再帰CTEが利用できるようになりました。結果として再帰CTEは階層クエリを扱う標準的な手法となりました。本章ではこの機能を自在に利用してデータの階層構造を解明するためのレシピを紹介します。
本題に入る前に、EMPテーブルのEMPNOとMGR間の階層関係を調べましょう。
select empno,mgrfrom emporder by 2EMPNO MGR ---------- ---------- 7788 7566 7902 7566 7499 7698 7521 7698 7900 7698 7844 7698 7654 7698 7934 7782 7876 7788 7566 7839 7782 7839 7698 7839 7369 7902 7839
これをよく見ると、MGRの値もEMPNOであることわかります。つまり、EMPテーブルの従業員の管理職もEMPテーブルの従業員であり、別のどこかに格納されているわけではありません。MGRとEMPNO間の関係は、MGRの値があるEMPNOの直近の親であるという点で親子関係です(また、ある特定の従業員の管理職も管理職を持ち、その管理職がまた管理職を持つといったようにn層の階層を形成する可能性もあります)。従業員が管理職を持たない場合には、MGRはNULLになります。
Read now
Unlock full access