我有以下表结构,我也提到了我的预期输出 请帮我查询,因为我不太了解sql查询
表格结构
表1:Emp详细信息
FName Id
Pratik 1
Praveen 3
Nilesh 2
表1:JoinigDocument
id DocumentName
1 Leaving
2 Exp letter
3 birth cert
表2:EmployeeJoiningDocument
EmpId JoiningDocumentId
1 1
1 2
3 1
3 2
3 3
2 1
2 3
预期产出:
FName Id JoiningDocumentId DocumentName
Pratik 1 1 Leaving
Pratik 1 2 Exp letter
Pratik 1 null birth cert
Praveen 3 1 Leaving
Praveen 3 2 Exp letter
Praveen 3 3 birth cert
Nilesh 2 1 Leaving
Nilesh 2 null Exp letter
Nilesh 2 3 birth cert
答案 0 :(得分:1)
您可以将查询编写为:
select
A.FName,
A.Id,
B.JoiningDocumentId,
c.DocumentName
from @JoinigDocument C
cross join @EmployeeDetail A
Left join @EmployeeJoiningDocument B on B.EmployeeId = A.id and
B.JoiningDocumentId = C.id
order by A.Id
首先交叉加入JoinigDocument
和EmployeeDetail
表,以便您获得员工和文档的所有可能组合,而不管员工是否具有该加入文档。然后,您需要执行左连接以保留所有这些匹配项,并查找与EmployeeJoiningDocument
中的有效条目相对应的数据。