php - 同时存在createdBy和updatedBy时正确加入users表

标签 php mysql join

我有一个表 environments,它有一个 createdBy 字段,以及一个 updatedBy 字段。这些字段存储成员(member) ID。

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

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

最佳答案

你需要一个双连接。一些类似的东西

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

关于php - 同时存在createdBy和updatedBy时正确加入users表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17395068/

相关文章:

mysql建表时出错

mysql - 关联表而不扭曲数据

shell - 根据列之间的一致性粘贴两个文件

php - 否则 mysql 查询占用前 20 个日期

PhpStorm (Laravel 8) 所有标准 Eloquent 方法在一个模型上都找不到,但在另一个模型上可用(无代码提示)

php - Magento 1.4 $_POST ['field_name'] 不工作

java - 如何使用左外连接创建jpql

java - 了解加入()

php - 如何使用 PHP 将 limit() 设置为 MongoQuery?

PHP & MySQL : Count and order most popular values in an array and then print