【问题标题】:SQL Query pulling same field with different valuesSQL查询提取具有不同值的相同字段
【发布时间】:2015-04-18 00:12:40
【问题描述】:

我有两个表,员工记录(id、firstName、lastName)和违规记录(violatorId、supervisorId)。

我的查询提取了违规者和主管的列表。我想显示他们的名字和姓氏,而不是显示此人的 ID。所以这是我目前的查询......

SELECT 
emp.firstName as vFirstName,
emp.lastName as vLastname,
v.violatorId, 
v.supervisorId,
emp.firstName as sFirstName,
emp.lastName as sLastName
FROM employee emp
LEFT JOIN violator v
ON violatorId = emp.id

因此,这将返回违规者的名字和姓氏信息,但不会返回主管。样本输出:

Violator vFirstName  vLastName   Supervisor sFirstName sLastName
1        Jon         Smith       20         Jon        Smith

任何帮助都会很棒

【问题讨论】:

  • 您的 supervisorId 是否引用了 Employee 表?

标签: mysql sql


【解决方案1】:
SELECT 
  e1.firstName AS violatorFirstName,
  e1.lastName AS violatorLastName,
  e2.firstName AS supervisorFirstName,
  e2.lastName AS supervisorLastName
FROM violator v
LEFT JOIN employee e1 ON v.violatorId = e1.id
LEFT JOIN employee e2 ON v. supervisorId = e2.id

【讨论】:

    【解决方案2】:

    您需要再次加入employee:

    SELECT emp.firstName AS vFirstName, emp.lastName AS vLastName,
           v.violatorId AS vId, v.supervisorId AS sId,
           s.firstName AS sFirstName, s.lastName AS sLastName
    FROM employee emp
    LEFT JOIN violator v ON v.violatorId = emp.id
    LEFT JOIN employee s ON v.supervisorId = s.id
    

    【讨论】:

      【解决方案3】:

      方法一

      SELECT 
        e1.violatorId AS violatorId ,
        e1.firstName AS violatorName,
        e2.supervisorId AS supervisorId ,
        e2.firstName AS supervisorName
      FROM violator v
      LEFT JOIN employee e1 ON v.violatorId = e1.id
      LEFT JOIN employee e2 ON v. supervisorId = e2.id
      

      方法 2

      SELECT 
          v.violatorId,
          emp.firstName AS violatorName, 
          v.supervisorId,
          (SELECT firstName FROM employee WHERE employee.id = v.supervisorId) AS supervisorName
      FROM 
          employee emp
      LEFT JOIN 
          violator v
      ON 
          violatorId = emp.id
      

      【讨论】:

        猜你喜欢
        • 2017-08-26
        • 1970-01-01
        • 2020-03-07
        • 2012-06-18
        • 2017-04-23
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多