我正在尝试为以下情况创建查询,但我似乎无法从概念到实际。本月和上个月出勤的SQL子查询
我有三个表:
- 档案(ID,名字,姓氏)
- 事件(ID,日期)
- 出席(PROFILE_ID,EVENT_ID)
我试图获得本月和上个月出席的个人档案清单。
到目前为止,我已经考虑过为这两个月做一些计数,只在大于1时选择它们,但我还没有完全掌握它的工作。
喜欢的东西:
SELECT * FROM Profile
LEFT OUTER JOIN Attendance ON Profile.ID = Attendance.Profile_ID
LEFT OUTER JOIN Event ON Attendance.Event_ID = Event.ID
WHERE [subquery to confirm attendance of this Profile_ID in this month/year > 1]
AND [subquery to confirm attendance of this Profile_ID in last month/year > 1]
所以,第一个问题是我是否不正确我思考的问题和我在一个良好的方向发展。第二个问题是如何正确执行这些子查询 - 我可以很容易地制作类似SELECT * FROM Attendance WHERE MONTH(Date) = 12 AND YEAR(Date) = 2016
的东西,但是这将返回所有出席者的列表。我真正想要的是仅列出每个ID的参加人数 - 所以当我查看ID 4时,我想查看该特定ID是否在本月和上个月有出席,但我不是确定如何将其添加到WHERE子句中。
1)是 - 这是一个方法。另一个是计算不同月份的总数等于参数的数量。对于2),请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple -sql-query – Strawberry