自己外部結合
メモ。MySQL4.1.18
テーブル
CREATE TABLE `tbl1` ( `id` int(11) NOT NULL default '0', `role` varchar(100) NOT NULL default '', PRIMARY KEY (`id`,`role`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
データ
+----+----------+ | id | role | +----+----------+ | 1 | mother | | 1 | teacher | | 1 | woman | | 2 | engineer | | 2 | father | | 2 | man | | 3 | engineer | | 3 | half | | 3 | son | +----+----------+
自己外部結合のSQL
SELECT A.id, A.role, B.role FROM tbl1 as A LEFT OUTER JOIN tbl1 as B ON A.id =B.id AND B.role = 'man' WHERE A.role = 'engineer';
結果
+----+----------+------+ | id | role | role | +----+----------+------+ | 2 | engineer | man | | 3 | engineer | NULL | +----+----------+------+
なにがやりたかったかというと、
あるroleを機軸として、そのroleを持つidが他に兼ねているroleの状況(この場合はrole ='man')を知りたかったと。
プログラマのためのSQL 第2版 | |
ジョー セルコ Joe Celko 秋田 昌幸 ピアソンエデュケーション 2001-04 売り上げランキング : 38,170 Amazonで詳しく見る by G-Tools |