首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试在同一个表中的2个列上创建多个内连接时未获取数据

尝试在同一个表中的2个列上创建多个内连接时未获取数据
EN

Stack Overflow用户
提问于 2021-11-15 19:39:29
回答 1查看 59关注 0票数 0

我有一个表格和如下所示的数据:

员工:

代码语言:javascript
运行
复制
Id      DepartmentId
1       100
2       100
3       100

LeaveRequest:

代码语言:javascript
运行
复制
Id    SentFromEmployeeId    SentToEmployeeId
1     1                     2
2     1                     2
3     2                     3

LeaveUpdateLogs:

代码语言:javascript
运行
复制
Id      RequestedDate             LeaveRequestId     Status
1       2021-11-01 11:55:56       1                  Pending
2       2021-11-02 10:55:56       1                  Accepted
3       2021-11-03 11:55:56       1                  Accepted
4       2021-11-04 09:55:56       1                  Declined
5       2021-11-05 10:55:56       1                  Closed

6       2021-11-06 05:55:56       2                  Pending
7       2021-11-07 05:55:56       2                  Accepted
8       2021-11-08 02:55:56       2                  Accepted
9       2021-11-09 05:55:56       2                  Declined
10       2021-11-10 05:55:56       2                  Closed

现在,我想计算特定部门的统计数据,如下所示:

DepartmentId 100sentreceived请求总数。

但我在这里对获取"Sent“和"Received”的数据感到困惑,如下所示:

代码语言:javascript
运行
复制
select SentFromEmployeeId,SentToEmployeeId,* from LeaveUpdateLogs l
inner join LeaveRequest lr on l.LeaveRequestId = lr.Id
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId
inner join Employee e2 on e2.Id = lr.SentToEmployeeId
where (l.RequestedDate >= '2021-11-01' and l.RequestedDate < '2021-11-16')
and (e1.DepartmentId =100 or e2.DepartmentId = 100)

但是这并没有返回任何数据,尽管我在这两个日期之间有"25“条记录。当我注释掉这3行时:

代码语言:javascript
运行
复制
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId
inner join Employee e2 on e2.Id = lr.SentToEmployeeId
(e1.DepartmentId =100 or e2.DepartmentId = 100)

那么查询可以正常工作,但是我想要获取特定部门的数据。

有人能帮我修正一下这个逻辑吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 22:03:46

由于我认为你只是在问如何连接多个值,这里有几种你可以解决这个问题的方法。

代码语言:javascript
运行
复制
inner join Employee e1 on e1.Id in (lr.SentFromEmployeeId, lr.SentToEmployeeId)

代码语言:javascript
运行
复制
inner join Employee e1 on e1.Id = lr.SentFromEmployeeId 
                       OR e1.Id = lr.SentToEmployeeId
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69979944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档