mysql - 使用 PHP PDO 进行双重分组
问题描述
我正在尝试从 mySQL 数据库中获取记录并将它们分组。让我们以这张表为例:
+++++++++++++++++++++++++++++++++++++++++++++++++++++
DATEADDED DOCTYPE SUBJECT DETAILS
2018-03-03 9:54:54 DOCUMENT Letter Outgoing
2018-03-03 8:54:54 PARCEL Mail Incoming
2018-03-04 8:55:54 PARCEL Mail Incoming
2018-03-04 8:55:54 DOCUMENT Mail Outgoing
+++++++++++++++++++++++++++++++++++++++++++++++++++++
我想做的是按日期(没有时间)对这些数据进行分组,然后按 TYPE 和 COUNT 分组,这样它看起来像这样:
+++++++++++++++++++
DATE: April 3, 2018
DOCUMENT - 1
PARCEL - 1
TOTAL-----------2
DATE: April 4, 2018
DOCUMENT - 1
PARCEL - 1
TOTAL-----------2
++++++++++++++++++++
尝试使用以下代码:
<?php
foreach($page->query('SELECT id,dateAdded,COUNT(*) FROM seclogs GROUP BY DATE(dateAdded) desc') as $row) { ?><tr>
<td><?php echo date("Y-m-d", strtotime($row['dateAdded'])); ?></td>
<td><?php
$thisDate=date(strtotime($row['dateAdded']));
foreach($page->query("SELECT id,dateAdded,docType,COUNT(*) FROM seclogs WHERE DATE(dateAdded) LIKE '$thisDate' GROUP BY docType desc") as $row2) {
echo $row2['docType']."-".$row2['COUNT(*)']."<br/>"; } ?><br/><b><?php echo "Total: ".$row['COUNT(*)'].""; ?></b> </td>
</tr><?php } ?>
但它只显示以下输出:
+++++++++++++++++++
DATE: April 3, 2018
TOTAL-----------2
DATE: April 4, 2018
TOTAL-----------2
++++++++++++++++++++
我一直在到处工作和搜索这个问题,但找不到任何答案。任何帮助都感激不尽。
解决方案
您想要的确切输出实际上是一个演示文稿,并且可以很容易地在您的 PHP 代码中处理。至于查询,以下是我将用于您需要的原始数据的内容:
SELECT
DATE(dateAdded) AS dateAdded,
docType,
COUNT(*) AS cnt
FROM seclogs
GROUP BY
DATE(dateAdded),
docType
ORDER BY
DATE(dateAdded),
docType;
当然,这不会给出你想要的输出,至少不完全是这样。你现在需要做的是使用一个循环,它只在每个日期/类型组的开头打印日期。
推荐阅读
- c# - 如何在没有默认 DLL 文件的情况下编译 C# Visual Studio 项目?
- java - OpenJDK 的局部变量类型推断样式指南的检查样式规则
- php - 在 laravel 问题中注册时分配用户角色
- javascript - 如何在 React 中传递和保持全局变量在函数中保持不变?
- c++ - 如何转换矢量
到一个字符数组? - javascript - 使用 classList 添加类
- xcode - 无法下载适用于 xcode 11.4 的其他工具
- javascript - 刷新页面后保持复选框处于选中状态
- angular - 我试图从角材料sidenav隐藏滚动条
- scala - 如何使用输入字符串计数?