用于列出用户总帖子的 PHP 脚本

标签 php mysql

我有一个包含两个表的数据库,Users 和 Posts。我想编写一个 php 脚本来按顺序列出前 20 个用户名及其发布的帖子数。 username 字段是 Users 表中的 cUsername。 Users表的intUserID字段和Posts表的intPosterID字段一一对应。

任何帮助将不胜感激。谢谢!

最佳答案

使用 GROUP BY 并计数。这将为您提供一份用户 ID 列表:

SELECT intPosterId, COUNT(*)
FROM Posts
GROUP BY intPosterId
ORDER BY COUNT(*) DESC
LIMIT 20

您可以在子查询中使用结果:

SELECT u.cUsername, pcnt.postCount
FROM Users AS u
INNER JOIN (
    SELECT intPosterId, COUNT(*) as postCount
    FROM Posts
    GROUP BY intPosterId
    ORDER BY COUNT(*) DESC
    LIMIT 20
) AS pcnt
ON u.intUserId = pcnt.intPosterId

在 PHP 脚本中使用它:

<?php
$sql = '
    SELECT u.cUsername, pcnt.postCount
    FROM Users AS u
    INNER JOIN (
        SELECT intPosterId, COUNT(*) as postCount
        FROM Posts
        GROUP BY intPosterId
        ORDER BY COUNT(*) DESC
        LIMIT 20
    ) AS pcnt
    ON u.intUserId = pcnt.intPosterId
';
$pdo = new PDO(
    'mysql:host=your_host;dbname=your_db', 
    'username', 
    'password',
    array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)
);
$stmt = $pdo->prepare($sql);
$stmt->execute();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "{$row['cUsername']}: {$row['postCount']} <br />\n";
}

关于用于列出用户总帖子的 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519032/

相关文章:

php - 我如何将这段文字和按钮与网页布局相匹配?

PHP, fatal error : Call to undefined method, 为什么?

PHP/MySQL 检查用户是否存在 : function does not work

mysql - SQL创建矩阵表

php - 插入查询后更新状态

php - HTTPS 和 500 内部服务器错误

php - 如何使用 PHP MySql 建立与数据库的连接

mysql - SQL:匹配字符串模式而不考虑大小写,列中的空格

php - Dropdownlist php不显示来自mysql数据库的数据

mysql - 触发 SQL 插入和更新