加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:29:18 所属栏目:PHP教程 来源:网络整理
导读:我正在实施一个成就系统.我正在尝试创建的“徽章”之一将决定: 如果用户已加入至少一个编码挑战 然后还没有加入3个连续的编码挑战 然后又开始参与了. 徽章简称为“我会回来”;-) 表格 users==================id fullname1 Gary Greenchallenge============
我正在实施一个成就系统.我正在尝试创建的“徽章”之一将决定:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读