-1

这个查询是关于在一个表中的两个 id 之间连接的东西。

表:雇主

Employee no.  Lastname  Firstname  reports to  title
111           Garret    Mike       333         sales manager
333           Frank     Savage     444         President

我的问题是如何连接这个表?

该表应如下所示:

Employee no.  Lastname  Firstname  reports to(Supervisor No.)  Firstname   Lastame
111           Garret    Mike       333                         Frank       Savage

我试过:

Select Employee no., Lastname, Firstname, reports to AS SuperVisorNumber, firstname, lastname From Employer
Where Employer.reports to =Employeeno.reports to

这只是一个例子。不要担心拼写错误和一切。

4

1 回答 1

2

您需要将表连接到自身:

select e1.Employeeno,
  e1.lastname EmpLastName,
  e1.firstname empFirstName,
  e1.reportsto,
  e2.firstname MgrFirstName,
  e2.lastname MgrLastName
from employer e1
inner join employer e2
  on e1.reportsto = e2.employeeno

请参阅带有演示的 SQL Fiddle

如果要查看所有员工,包括总裁,则将其更改为LEFT JOIN

select e1.Employeeno,
  e1.lastname EmpLastName,
  e1.firstname empFirstName,
  e1.reportsto,
  e2.firstname MgrFirstName,
  e2.lastname MgrLastName
from employer e1
left join employer e2
  on e1.reportsto = e2.employeeno

请参阅带有演示的 SQL Fiddle

如果您想使用更具描述性的表别名,则可以使用如下内容:

from employer employee
left join employer manager
  on employee.reportsto = manager.employeeno
于 2012-10-12T21:47:24.190 回答