在 table 中查找多个实例
Finding multiple instances in a table
我的数据库中有两个 table:
事件:
学生:
我有一个 SQL 查询,它查询 'Events' table 以显示学生何时进来(其中 In_Or_Out = 'In')一周内晚于 08:40:
SELECT RFID,Event_Date_Time
FROM Events
WHERE Events.Event_Date_Time BETWEEN #3/24/2015# And #3/17/2015# AND Events.In_Or_Out='In' AND Format(Event_Date_Time,'HH:MM')>#8:40:00#
现在我想知道一个学生是否在一周内迟到两次或更多次。我尝试了以下 SQL 查询,但它不起作用:
SELECT *
FROM Events
WHERE Events.Event_Date_Time BETWEEN #3/24/2015# And #3/17/2015# AND Events.In_Or_Out='In' AND Format(Event_Date_Time,'HH:MM')>#8:40:00#
GROUP BY RFID
HAVING COUNT(RFID)>1
有人知道正确的查询吗?
SELECT e.RFID, s.FORENAME, s.SURENAME, count(e.*) AS LATE,
FROM Events e
INNER JOIN students s
on s.RFID = e.RFID
WHERE e.Event_Date_Time BETWEEN '3/24/2015' And '3/17/2015'
AND e.In_Or_Out='In'
AND time(e.Event_Date_Time)>'8:40:00'
GROUP BY e.RFID, s.FORENAME, s.SURENAME
HAVING COUNT(e.*)>1
根据您的示例查询,Event_Date_Time 似乎是 Date/Time 数据类型。所以我建议您使用 TimeValue()
将时间组件检查为 Date/Time 类型,而不是使用 Format()
.
SELECT Events.RFID, Count(*)
FROM Events
WHERE
Events.Event_Date_Time BETWEEN #3/17/2015# And #3/24/2015#
AND Events.In_Or_Out='In'
AND TimeValue(Events.Event_Date_Time) > #08:40:00#
GROUP BY Events.RFID
HAVING COUNT(*) > 1
如果您还想查看您的 学生 table 的姓名或其他信息,请加入 GROUP BY
查询返回 RFID.