首页 > 解决方案 > 如何在 PHP 中显示 MySQL 列的总数

问题描述

我只是遇到了一些麻烦,对 MySQL 没有超级经验。这是我的代码:

    // Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, client, package, rate, term_start, term_end, last_billed FROM clients";
$result = $conn->query($sql);


    echo "<table><tr><th>Client</th><th>Package</th><th>Rate</th><th>Term Start</th><th>Term End</th><th>Last Billed</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["client"] . "</td><td>" . $row["package"]. "</td><td>$" . $row["rate"]. "</td><td>" . date("M\(m\) j, Y", strtotime($row["term_start"])) . "</td><td>" . date("M\(m\) j, Y", strtotime($row["term_end"])) . "</td><td>" . date("M\(m\) j, Y g:i a", strtotime($row["last_billed"])) . "</td><td><div class='tags'><a href=''>Details</a><a href=''>Send Invoice</a></div></td></tr>";
    }

    echo "<tr><td></td><td></td><td>" . $row["rate_sum"] . "</td></tr>";
    echo "</table>";

$conn->close();

如您所见,我希望列行中所有事物的总和总计。我知道SELECT SUM(rate) AS rate_sum FROM clients这是让它以“rate_sum”返回,但是如何在进行 SQL 调用的同时进行另一个调用?

标签: phpmysql

解决方案


这可以像这样在查询中完成。

SELECT id, client, package, rate, SUM(rate) as total, term_start, term_end, last_billed 
FROM clients
group by id with Rollup

最后一行的 id 为 null 和你想要的总数。

https://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html

这不是 ROLLUP 最常见的用途,当您已经在进行聚合时,它更常用作超级聚合,例如按月分组销售并获得总计。但是,如果您需要数据来自查询而不是在外部计算,则对 id 进行分组将使其就像一个简单的总和。它确实有关于排序和限制的缺点。


推荐阅读