1

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か?

4

1 に答える 1