1

フィールドとフィールドのenvironments両方を持つテーブルがあります。これらのフィールドには、メンバー ID が格納されます。createdByupdatedBy

membersID とユーザー名を格納するテーブルもあります。以下は、テーブルを作成するためのクエリです

CREATE TABLE `environments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `createdBy` varchar(45) DEFAULT NULL,
  `createdDtTm` datetime DEFAULT NULL,
  `updatedBy` varchar(45) DEFAULT NULL,
  `updatedDtTm` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8$$

CREATE TABLE `members` (
  `member_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `firstname` varchar(100) DEFAULT NULL,
  `lastname` varchar(100) DEFAULT NULL,
  `login` varchar(100) NOT NULL DEFAULT '',
  `passwd` varchar(32) NOT NULL DEFAULT '',
  PRIMARY KEY (`member_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8$$

すべての環境を表示するクエリを書きたいのですが、ID を表示する代わりに、ユーザー名を表示したいと思います。ただし、それらは異なる可能性があるため、結合ステートメントの書き方がわかりません。アイデア?

4

1 に答える 1

4

二重結合が必要です。の線に沿った何か

SELECT
  environments.*,
  creators.firstname AS cfirstname,
  creators.lastname AS clastname,
  updaters.firstname AS ufirstname,
  updaters.lasstname AS ulastname
FROM
  environments
  INNER JOIN members AS creators ON environments.createdBy=creators.login
  LEFT JOIN members AS updaters ON environments.updatedBy=updaters.login
WHERE -- whatever
于 2013-06-30T21:36:08.017 に答える