【发布时间】:2018-02-25 23:30:36
【问题描述】:
我正在尝试获取特定日期的记录数量。问题是当日期没有记录时,它不会显示日期。
$asksome= mysqli_query("
SELECT COUNT(worker_id) AS amount, problem.datter AS datum
FROM problem
WHERE worker_id = $idmed
GROUP BY datter"
);
结构如下:
worker_id | datter | note
1 |2018-02-25 |
1 |2018-02-26 |
3 |2018-02-25 |
这是我正在使用的查询。我希望查询显示日期,即使 COUNT 为 0。我的意思是我希望结果是这样的:
count result | date
0 | 2018-02-24
2 | 2018-02-25
1 | 2018-02-26
0 | 2018-02-27
- - 对于那些发现这篇文章却不知道该怎么做的人:我通过制作另一个表来解决我的问题,该表只包含我想要检查的特定日期。 我使用了以下查询:
SELECT weeks.week_id AS datum, COUNT(problem.datter) AS amount
FROM weeks
LEFT JOIN problem ON problem.datter = weeks.week_id
GROUP BY weeks.week_id
【问题讨论】:
-
尝试将您的数据库结构放入问题表,以便提供更清晰的帮助。
-
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")过程化接口是 PHP 4 时代引入mysqliAPI 时的产物,不应在新代码中使用。 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
在你的例子中,如果你想在count = 0时显示日期,那么如果worker_id = 2,日期是什么?
-
是的 anonyXmous,这就是我想要完成的目标