我有两个表,如下所示:
-----------------------
|EmpNo|Complaint |
-----------------------
|9091 |Change required|
|9092 |No change |
|9093 |Changes done |
-----------------------
Run Code Online (Sandbox Code Playgroud)
上表包含员工编号和他的投诉。
我还有一张表格,其中包含员工的各种详细信息,如下所示。
-------------------------------
|EmpNo|EmailID |EmpBossNO|
-------------------------------
|9091 |abc@gmail.com|9092 |
|9092 |xyz@gmail.com|9093 |
|9093 |mno@gmail.com|9099 |
-------------------------------
Run Code Online (Sandbox Code Playgroud)
在这里,如果Empno:9091提出任何投诉,那么将会向他发送一封邮件boss,说明该投诉是您的员工提出的,您必须接受它,因此我想得到该EmailID员工的老板,为此我想要一个SQL查询。我尝试了此处显示的查询,但没有用。
select EmpEmailID
from tblComplaint
inner join tblEmpMaster on tblEmpMaster.EmpNo = tblComplaint.EmpPSNo
where tblComplaint.EmpPSNo = tblEmpMaster.EmpBossNo
Run Code Online (Sandbox Code Playgroud)
我要输出类似..如果提出投诉EmpNo:9091,它将返回他老板的EmailID xyz@gmail.com。
tblComplaint和tblEmpMaster表之间的联接使您处在正确的轨道上。但是,您需要额外的加入才能tblEmpMaster为每位员工的投诉带来老板的电子邮件。
SELECT
c.EmpNo,
c.Complaint,
COALESCE(e2.EmailID, 'NA') AS boss_email
FROM tblComplaint c
INNER JOIN tblEmpMaster e1
ON c.EmpNo = e1.empNo
LEFT JOIN tblEmpMaster e2
ON e1.EmpBossNO = e2.EmpNo;
Run Code Online (Sandbox Code Playgroud)
如果给定的员工没有老板(例如,最高级别的老板),我在上方使用了左自我连接。在这种情况下,我将显示NA老板电子邮件。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |