gpt4 book ai didi

php - 如何使用 PHP 和 MYSQL 在逗号分隔列表中找到前 10 个最流行的值

转载 作者:可可西里 更新时间:2023-11-01 08:21:23 24 4
gpt4 key购买 nike

我对这一切都是陌生的,我在这里用谷歌搜索,但无济于事。使用谷歌和这里的一些回复,我已经设法解决了一个单独的问题,但这是我真正感兴趣的,并且想知道这是否可能/如何实现它。

我的 mysql 表如下所示:

id       type of game       players               timestamp
1 poker a,b,c,d,e,f,g,h 2011-10-08 08:00:00
2 fencing i,j,k,l,m,n,o,p 2011-10-08 08:05:00
3 tennis a,e,k,g,p,o,d,z 2011-10-08 08:10:00
4 football x,y,f,b 2011-10-08 08:15:00

有 7 种游戏类型,每种游戏类型有 4 名或 8 名玩家,以逗号分隔。然而,这些玩家都是 IRC 昵称,因此可能会一直有新玩家使用独特的昵称。

我想做的是查看整个表格的玩家列,找到玩游戏的前 10 名玩家,无论游戏类型如何,然后以这种格式将其打印到网站上,例如:

前 10 名玩家:

  1. a(50 场比赛)
  2. f(39 场比赛)
  3. o(玩了 20 场比赛)……

10 g(玩过 2 场比赛)

有没有人知道如何完成这个?任何帮助表示赞赏!老实说,如果没有这个网站,我什至不会在我的项目中参加这个展览会!

最佳答案

我的建议是不要在同一个表中保留每个游戏的玩家列表,而是在 games 之间实现一个关系。 table 和一个 players表。

新模型看起来像:

table 上游戏:

id       type of game       timestamp
1 poker 2011-10-08 08:00:00
2 fencing 2011-10-08 08:05:00
3 tennis 2011-10-08 08:10:00
4 football 2011-10-08 08:15:00

table 上玩家:

id       name
1 a
2 b
3 c
.. ..

TABLE PlayersInGame:

id      idGame     idPlayer   current
1 1 1 true //Player a is currently playing poker

当玩家开始游戏时,将其添加到 PlayersInGame表。

当玩家退出游戏时,设置current状态为 false .

要检索玩家玩的游戏数,请查询 PlayersInGame表。

SELECT COUNT FROM PlayersInGame WHERE idPlayer=1

为了加快处理速度,您需要对表格进行去规范化(实际上不是去规范化,但我不知道该怎么调用它)并跟踪 Players 中每个玩家的游戏数量。 table 。这会增加表的大小,但会提供更快的速度。

因此在 Players 中插入列 games played 并在之后查询:

SELECT * FROM Players ORDER BY games_played DESC LIMIT 10

编辑:

正如 Ilmari Karonen 指出的那样,要从中获得速度,您必须创建一个 INDEX对于列 games_played .

关于php - 如何使用 PHP 和 MYSQL 在逗号分隔列表中找到前 10 个最流行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7696690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com