Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当同时存在createdBy和updatedBy时,正确地联接用户表_Php_Mysql_Join - Fatal编程技术网

Php 当同时存在createdBy和updatedBy时,正确地联接用户表

Php 当同时存在createdBy和updatedBy时,正确地联接用户表,php,mysql,join,Php,Mysql,Join,我有一个表environments,它既有一个createdBy字段,也有一个updatedBy字段。这些字段存储成员ID 还有一个包含ID和用户名的表members。下面是创建表的查询 CREATE TABLE `environments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) DEFAULT NULL, `createdBy` varchar(45) DEFAULT NULL, `createdD

我有一个表
environments
,它既有一个
createdBy
字段,也有一个
updatedBy
字段。这些字段存储成员ID

还有一个包含ID和用户名的表
members
。下面是创建表的查询

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,而是要显示用户名。由于它们可能不同,我不确定如何编写join语句。想法?

你需要双重加入。类似于

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

你需要一个双重连接。类似于

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

如果要两次合并同一个表,则需要使用别名。createdBy和updatedBy不是整数也有原因吗?是的。我太粗心了。我从v1(其中是用户名的硬编码值)到v2(其中有一个members表),忘记了更新表模式。如果要加入同一个表两次,则需要使用别名。createdBy和updatedBy不是整数也有原因吗?是的。我太粗心了。我从v1(其中是用户名的硬编码值)转到v2(其中有一个members表),忘记了更新表schemaah ok。这是有道理的。谢谢检查Markah ok的计时器上有6分钟。这是有道理的。谢谢在计时器上打勾6分钟