php – 告诉3个或更多连续记录丢失的最佳方式

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 告诉3个或更多连续记录丢失的最佳方式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在实施一个成就系统.我正在尝试创建的“徽章”之一将决定:

>如果用户已加入至少一个编码挑战
>然后还没有加入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

怎么样?

这是我的问题

>在查询中执行此操作的最佳方法是什么
>我是否可以在MysqL中使用这个函数来选择此范围而无需使用某些PHP

到目前为止的查询

正在进行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,
  entries.id AS entry_id
 从
  challenge_details挑战
  LEFT JOIN challenge_entries条目ON entries.challengeid = challenge.id和entries.userid =< user_id>
ORDER BY challenge.start_date

添加组可以按照您的意愿完成…

脚本宝典总结

以上是脚本宝典为你收集整理的php – 告诉3个或更多连续记录丢失的最佳方式全部内容,希望文章能够帮你解决php – 告诉3个或更多连续记录丢失的最佳方式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。