gpt4 book ai didi

mysql - 获取上个月的所有记录,其中每个用户有一个结果以及每个用户的最大列数

转载 作者:行者123 更新时间:2023-11-29 22:44:51 25 4
gpt4 key购买 nike

基本上,我想做的是获取上个月(目前是所有论坛)中排名最高的信誉用户。如果已经有人问过这个问题,我深表歉意,但我已经搜索过,但没有找到任何东西。

表结构:

注意:我在这里只显示相关列,还有更多。

声誉

id | given_by | post_id | vote | time_given

1 | 2 | 1 | 1 | 1390763007
2 | 6 | 2 | -1 | 1390763013
3 | 7 | 2 | -1 | 1390763013

(下表中的每张投票都有一个条目)

帖子

 id | poster_id  | reputation | posted

1 | 4 | 1 | 1390763013
2 | 3 | -2 | 1390763013
3 | 8 | 4 | 1390763013
4 | 4 | 5 | 1390763013

有一个主题表和论坛表,我最终也会介绍它们。但实际上我想让它首先简单地工作。

$date = getdate(time());
$time = mktime(0, 0, 0, $date['mon'], 1, $date['year']);

//$sql = "SELECT u.username, u.id, u.group_id, p.reputation FROM reputation AS r LEFT JOIN posts AS p ON r.post_id = p.id LEFT JOIN users AS u ON p.poster_id = u.id WHERE p.reputation > '0' AND p.posted <= :time ORDER BY p.posted DESC";
$sql1 = "SELECT p.id FROM posts AS p WHERE p.id = :id";
$ps1 = $pdo->prepare($sql);

$sql = "SELECT r.post_id FROM reputation AS r WHERE r.time_given >= :time ORDER BY r.time_given DESC";
$ps = $pdo->prepare($sql);
$ps->execute(array(':time'=>$time));
$ps->setFetchMode(PDO::FETCH_ASSOC);
foreach ($ps as $reputation)
{
print_r($reputation);
$ps1->execute(array(':id'=>$reputation['post_id']));
}

第一个查询有效,但它会多次显示发帖者 ID,例如,如果他们在过去一个月中获得了不止一点声誉。不知何故,我需要一个函数来对函数变量求和,这将把帖子表中海报 x 的所有声誉相加,不再有同一海报的行,仅显示正面声誉并按声誉降序排列 -因此上表中的示例在 MySQL 中应如下所示:

poster_id | reputation

4 | 6
8 | 4

这是我正在努力解决的分组部分,我可以通过 PHP 来完成此操作,但我更愿意通过 MySQL 来完成,并且只需循环结果。

我宁愿在一个查询中包含此内容,但最多两个。

最佳答案

您可以对表中的字段进行计算。您只需按选择中的其他项目进行分组,如下所示:

SELECT poster_id, sum(reputation) as reputation
FROM posts
group by poster_id

关于mysql - 获取上个月的所有记录,其中每个用户有一个结果以及每个用户的最大列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29184975/

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