【发布时间】:2019-07-13 17:41:04
【问题描述】:
场景是我们有作业和学生在作业后给出的反馈。它们在数据库中不相关(课程和学生除外)。每个都有倍数。学生可以在作业中重新测试,并且可以多次提供反馈。
假设以下场景:
分配
Name time (these are really Unixtimestamps)
A1 0600
A1 1800
A2 0700
反馈
Assignment time key
A1 0700 feedback 1
A1 1200 feedback 2
A1 1900 feedback 3
学生在 0600 参加了 A1 作业,并在 0700 提供了反馈(反馈 1)。他们改变了主意并在 1200 更新了他们的反馈(反馈 2)。然后,他们在 1800 年的 A1 作业中重新测试,并在 1900 年将他们的反馈提供给休息者(反馈 3)。他们分别坐在 A2 上,没有提供反馈。
我们需要根据时间将反馈与作业相匹配。
输出应该是(分配表中每行一行)
Assignment assignmenttime feedbacktime Feedback
A1 0600 0700 feedback 1
A1 1800 1900 feedback 3
A2 0700 NULL NULL
Feedback1 与 A1 相关,因为我可以加入名称并且 feedback.time 大于 assignment.time。我的问题是,如果有多个反馈记录,我只想要大于分配时间的最小的一个。 如果没有与任务/时间匹配的反馈记录,那么我们仍然需要任务记录。
实现这一点的 MYSQL 是什么? 谢谢。
【问题讨论】:
-
要格式化为
code,选择文本并按ctrl-k或在每行前添加4个空格 -
@JuanCarlosOropeza 感谢您的编辑,但我现在有另一个问题:我不知道如何编写查询:~(
-
@TimBiegeleisen 是的,看起来并不容易
-
dbdummy 你的 MySQL 是什么版本?
-
我猜你也看到了一个问题,即根据数据,即使是相关的 LIMIT 查询也可能会在同一件事上出现两次。是的...窗口函数在这里肯定会有所帮助。
标签: mysql sql join window-functions