【发布时间】:2011-01-01 00:44:11
【问题描述】:
这是我手头的两张桌子,
挑战
标识 |名字
挑战用户
user_id |挑战ID |开始时间 |完成时间
challenge_users 表中的每个实例都是用户接受挑战的记录及其状态(基于started_at 和completed_at 时间戳的状态)
此外,用户可以多次接受挑战(不能同时进行,但可以在第一个实例完成后再次接受)。因此,对于单个挑战,表格可能看起来像这样。
id | challenge_id | started_at | completed_at
2831 | 4 | 2010-12-23 00:00:00 | 2010-12-29 15:42:41
2834 | 4 | 2010-12-29 15:46:53 |空
现在,我需要从 Challenges 表中检索所有挑战的列表,以及从 Challenge_users 表中获取最新实例的状态。
状态是: 如果 Challenge_users 表中没有挑战实例 => 未启动 如果 completed_at 为 null 且 started_at 不为 null => 正在进行 如果completed_at 不为null 并且started_at 不为null => 完成
我有两个问题:
如何进行简单的联接,以便在 challeges_users 中没有特定 user_id 的任何实例的所有挑战也包含在结果集中。
如何返回结果集,使其仅包含最新开始时间的记录。
非常感谢任何帮助。谢谢!
【问题讨论】:
-
三个状态中的哪一个应该包含在结果集中?