0

次の SQL ステートメントがあります。

select * from Leaves inner join LeaveDetails on Leaves.LeaveId= LeaveDetails.LeaveId 
inner join Employee on Leaves.EmployeeCode =  Employee.EmployeeCode
inner join LeaveType on Leaves.LeaveTypeId= LeaveType.LeaveTypeId 
inner join LeaveStatus on Leaves.StatusId = LeaveStatus.StatusId 
inner join Employee_organizationaldetails on Employee_organizationaldetails.EmployeeCode=Employee.EmployeeCode 
where Leaves.LeaveId = 7295 

Employee_organizationdetails には、Reporting Officer という別の列が含まれています。これは、同じ Employee テーブルへの外部キーです。次に、従業員の名前を取得する必要があります。

上記のクエリをどのように記述して、クエリをフェッチして実行せずに報告担当者の名前を別の列として取得できますか

select (FirstName + ' ' + LastName) as name from Employee where EmployeeCode = ReportingTo

ここで、ReportingTo は従業員コードです。それらを垂直に結合する必要があります。ユニオン演算子に似たもの

4

2 に答える 2

1

Employeeテーブルの別の「コピー」に再び参加したい:

select *, (ro.FirstName + ' ' + LastName) as ReportingName
from Leaves inner join LeaveDetails on Leaves.LeaveId= LeaveDetails.LeaveId 
inner join Employee on Leaves.EmployeeCode =  Employee.EmployeeCode
inner join LeaveType on Leaves.LeaveTypeId= LeaveType.LeaveTypeId 
inner join LeaveStatus on Leaves.StatusId = LeaveStatus.StatusId 
inner join Employee_organizationaldetails on Employee_organizationaldetails.EmployeeCode=Employee.EmployeeCode  left outer join
Employee ro
on ro.EmployeeCode = ReportingTo
where Leaves.LeaveId = 7295;

あなたはおそらく望んでいないでしょう*-- 私はそれが質問の単なる省略表現であると思います. 特に列名が重複しているため、列を明示的にリストすることをお勧めします。

于 2013-05-20T11:17:04.240 に答える