SQL WHERE 子句在同一字段上匹配两次(或多次)。正确使用的 JOIN 语句是什么?

问题描述 投票:0回答:2

我有一个包含两个表的数据库:

  • 员工表:字段 = {ID, 姓名}
  • 转班表:字段 = {ID, 日期, ID_employee1, ID_employee2}

这是该数据库的示例。

使用 MYSQL,我想执行一个 SELECT 查询,该查询能够显示每个轮班涉及的两名员工的姓名。

下图显示了使用前面的数据库示例所需的查询结果:

sql mysql database select where-clause
2个回答
1
投票

可以按如下方式完成:

SELECT
  t.ID AS turnShiftID,
  t.date AS turnShiftDate,
  e1.name AS employee1Name,
  e2.name AS employee2Name
FROM
  turnShift t
  INNER JOIN employees e1 ON t.ID_employee1 = e1.ID
  INNER JOIN employees e2 ON t.ID_employee2 = e2.ID;

1
投票

我会查询

turn_shift
表并加入
employee
表两次,对于要转换为名称的每一列 ID 一次:

SELECT t.id, t.date, e1.name AS name_employee1, e2.name AS name_employee2
FROM   turn_shift t
JOIN   employee e1 ON t.id_employee1 = e1.id
JOIN   employee e2 ON t_id_employee2 = e2.id
© www.soinside.com 2019 - 2024. All rights reserved.