gpt4 book ai didi

php - 计算当前分类或其下分类中积分最多的前5名用户

转载 作者:行者123 更新时间:2023-11-29 02:32:39 26 4
gpt4 key购买 nike

我的网站上有一个积分系统,不同网站类别中的不同成就可以获得积分。使用“category_relations”表和包含相关 category_id 的“links_to”和“links_from”字段,类别可以有子类别和父类别。

我想做的是获取当前类别及其正下方任何类别中得分最高的前 5 名用户。

我的“points_awarded”表包含所有奖励积分以及来自哪些类别的用户的所有记录:

用户ID,
点数,plus (tinyint boolean 是否加点),
减号(tinyint bool 值,如果它是罚分),
类别_id

我真的不知道从哪里开始。我是否需要有两个查询,一个用于获取所有子类别 ID,然后一个用于使用它来运行另一个查询以获取所用点的 SUM()?是否可以在一个查询中完成?

最佳答案

我需要更多关于您的数据库表的信息才能确定,但​​像这样的东西可能会起作用:

SELECT 
`user_id`,
SUM(IF(`plus`, `points_amount`, 0)) - SUM(IF(`minus`, `points_amount`, 0)) AS `points`
FROM
`points_awarded`
WHERE
`user_id` = $user_id
AND (
`category_id` = $cat_id
OR `category_id` IN(
SELECT `links_to`
FROM `category_relations`
WHERE `links_from` = $cat_id
)
)
GROUP BY `user_id`

不过我很好奇,为什么会有加号字段和减号字段?如果加号是假的,我们不能假设它是减号吗?为什么要有任何一个字段,为什么不直接将 points_amount 设为带符号的字段?

关于php - 计算当前分类或其下分类中积分最多的前5名用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10633415/

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