gpt4 book ai didi

php - 统计表 "posts"中有关表 "users"中的用户的所有帖子

转载 作者:行者123 更新时间:2023-11-29 06:55:52 25 4
gpt4 key购买 nike

两个表 - postsusers
posts.user 列与 users.id 匹配。
我想统计所有用户的所有帖子,这样:

user1 5
user2 3
user3 9

...等等,这意味着 users 中的 user1 有 5 个来自 posts 的实例...等

$items = '';
$sql = "select users.name, posts.user from users inner join posts on users.id = posts.user";
$stmt = $db->query($sql);
while($row = $stmt->fetch()){
$count = $stmt->rowCount();
$items .= "<div><span class='spanuser'>" . $row['name'] . "</span> <span class='spancount'>" . $count . "</span></div>";
}
echo $items;

结果

user1 74 // 74 is total number of `posts` rows  
user2 74
user3 74
... all users - 74

有什么帮助吗?

最佳答案

您需要将GROUP BYLEFT JOIN一起使用,例如:

SELECT u.name, COUNT(p.id) AS `count`
FROM users u LEFT JOIN posts p ON u.id = p.user
GROUP BY u.name;

这将为您提供所需的输出。

更新

根据我们的讨论,要获取今天的计数,您可以使用以下查询:

SELECT u.name, COUNT(p.id) AS `count`
FROM users u LEFT JOIN posts p ON u.id = p.user
WHERE DATE(datetime) = DATE(NOW())
GROUP BY u.name;

同样,您可以使用 BETWEEN 运算符来获取日期范围内的相同计数,例如,对于过去 7 天,您可以使用:

SELECT u.name, COUNT(p.id) AS `count`
FROM users u LEFT JOIN posts p ON u.id = p.user
WHERE DATE(datetime) BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND DATE(NOW())
GROUP BY u.name;

此外,您需要更新 php 以使用查询返回的 count 而不是 rowCount,例如:

$items .= "<div><span class='spanuser'>" . $row['name'] . "</span> <span class='spancount'>" . $row['count'] . "</span></div>";

关于php - 统计表 "posts"中有关表 "users"中的用户的所有帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45675290/

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