3 つのテーブルがあるとします。
userテーブル:
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`loc` int(11) DEFAULT NULL,
`doc` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
locationテーブル:
CREATE TABLE `location` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
およびdocument表:
CREATE TABLE `document` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`maintainer` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
ユーザー情報を正常に取得できます。これは、次のクエリで対応locationし、情報を取得します。document
SELECT * from `user` LEFT JOIN `location` on user.loc = location.id LEFT JOIN `document` on user.doc = document.id;
このlocation情報は、他のテーブルの他の行を参照していないため、簡単に参照できます。documentただし、テーブルには、テーブル内の別のmaintainerフィールドに直接対応するフィールドが含まれています。このフィールドは情報をカプセル化し、実際のデータは提供しません。useruseruseruser
maintainerのデータが実際のuserデータを返すようにテーブルをクエリする方法はありませんidか?