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
フィールドに直接対応するフィールドが含まれています。このフィールドは情報をカプセル化し、実際のデータは提供しません。user
user
user
user
maintainer
のデータが実際のuser
データを返すようにテーブルをクエリする方法はありませんid
か?