php - 根据表的一列对MySQL查询的结果进行分组

标签 php mysql sql pdo while-loop

我有以下查询:

if ($stmt = $mysqli->prepare("SELECT Date, Due, Paid from patient_sessions WHERE Name=? AND Invoiced=? AND Type=? AND SUBSTR(Date,1,7)=? ORDER BY Date")) {

    $stmt->bind_param("ssss",$client,$invoiced,$type,$month);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($date,$due,$paid);

while ($stmt->fetch()) {

RUN SOMETHING HERE

}

我不想使用 while ($stmt->fetch()) 循环遍历所有返回的行,而是希望按 Due 列中的值对返回的行进行分组,并且然后遍历每组的每一行,但我不确定该怎么做。

额外信息

我想以下列格式返回结果:

每个“到期”值返回一行,并返回每个值的行数(这就是需要分组的原因)。

然后……

每行一行,按日期排序,其中显示所有 3 个值(Date、Due、Paid)。

我被卡住了,因为我需要分组和单独的行。我可以通过一个查询返回两者吗?

最佳答案

$sql = "SELECT Date, Due, Paid from patient_sessions 
        WHERE Name=? AND Invoiced=? AND Type=? AND SUBSTR(Date,1,7)=? 
        ORDER BY Due, Date";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssss",$client,$invoiced,$type,$month);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($date,$due,$paid);
$data = array();
while ($stmt->fetch())
{
    if (!isset($data[$due]))
    {
         $data[$due] = array();
    }
    $data[$due][] = array($date,$paid);
}
print_r($data);

关于php - 根据表的一列对MySQL查询的结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594199/

相关文章:

php - 在同一个 vps 上运行 node、PHP 和 Python

php - 如何查看 '@' 抑制的错误?

java - 单击按钮时如何从 php 中的下拉菜单项调用 Java 文件

php - Laravel Sail数据库连接被拒绝错误

mysql - 如何从已截断的 Mysql 5.6 分区中清除数据?

sql - LEFT JOIN 使用子查询不返回空结果为 "0"

使用 where 字段 ='string' 选择查询时出现 MySQLi 错误

C# Mysql 错误检查 token 是否存在

c# - Linq 查询不获取记录

mysql - 从数据库中选择热点文章