php – 告诉3个或更多连续记录丢失的最佳方式
我正在实施一个成就系统.我正在尝试创建的“徽章”之一将决定:
>如果用户已加入至少一个编码挑战 徽章简称为“我会回来”;-) 表格 users ================== id fullname 1 Gary Green challenge ================================== id name start_date 1 challenge1 01-AUG-2010 2 challenge2 03-AUG-2010 3 challenge3 06-SEP-2010 4 challenge4 07-SEP-2010 5 challenge5 30-OCT-2010 6 challenge6 05-NOV-2010 entries ==================================================== id challengeid userid type code 1 1 1 1 - 2 2 1 1 - 3 6 1 1 - 4 6 1 2 - 条目表中的“类型”是指条目类型是基于非正则表达式的条目还是基于正则表达式的条目.用户可以提交正则表达式和非正则表达式条目,因此挑战6的上述条目有效. 示例输出 这是我想要的查询的样式输出(在这种情况下应该授予徽章): (for userid 1) Challenge 1 --> Joined in Challenge 2 --> Joined in Challenge 3 --> NULL Challenge 4 --> NULL Challenge 5 --> NULL Challenge 6 --> Joined in 怎么样? 这是我的问题 >在查询中执行此操作的最佳方法是什么? 到目前为止的查询 我正在进行LEFT OUTER JOIN加入挑战表和条目表(LEFT OUTER以确保保留用户未加入的挑战),然后按挑战start_date排序以查看用户是否尚未加入3或更多连续挑战. SELECT challenge.id AS challenge_id,entries.id AS entry_id FROM challenge_entries entries LEFT OUTER JOIN challenge_details challenge ON entries.challengeid = challenge.id WHERE entries.userid = <user_id> ORDER BY challenge.start_date GROUP BY entries.challengeid 重要的编辑:为了使这个徽章有意义,标准将需要在连接的挑战之间夹着3个或更多个连续挑战,例如上面的示例输出.否则,任何第一次参加挑战的人都将自动收到徽章.必须看到用户已经“远离”参与挑战一段时间(> = 3) 解决方法
我认为你需要使用另一个表开始……
SELECT challenge.id AS challenge_id, 添加组可以按照您的意愿完成… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |