作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
两个表 - posts
和 users
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 BY
与LEFT 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/
两个表 - posts 和 users posts.user 列与 users.id 匹配。 我想统计所有用户的所有帖子,这样: user1 5 user2 3 user3 9 ...等等,这意味着
我是Python新手(使用Python3.6),我学习它主要是为了能够为此页面构建一个抓取工具 http://www.nhl.com/stats/player?aggregate=0&gameType
我是一名优秀的程序员,十分优秀!