Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql仅按日期分组并计算结果数量_Php_Mysql_Date_Group By - Fatal编程技术网

Php mysql仅按日期分组并计算结果数量

Php mysql仅按日期分组并计算结果数量,php,mysql,date,group-by,Php,Mysql,Date,Group By,我在mysql数据库中有一个示例表名(info),如下所示: id dateAdded ---------------------------- 1 2013-12-24 03:03:19 2 2013-12-24 03:04:19 3 2013-12-24 03:06:14 4 2013-12-24 03:07:23 5 2013-12-25 03:04:19 6 2013-12-26 03:02:

我在mysql数据库中有一个示例表名(info),如下所示:

id dateAdded
----------------------------
1 2013-12-24 03:03:19
2 2013-12-24 03:04:19
3 2013-12-24 03:06:14
4 2013-12-24 03:07:23
5 2013-12-25 03:04:19
6 2013-12-26 03:02:19
7 2013-12-26 03:03:19
id date
----------------------------
11 2013-12-24 03:03:19
22 2013-12-24 03:04:19
33 2013-12-25 03:06:14
53 2013-12-25 03:04:19
62 2013-12-26 03:02:19
已添加id日期
----------------------------
1 2013-12-24 03:03:19
2013-12-24 03:04:19
3 2013-12-24 03:06:14
4 2013-12-24 03:07:23
5 2013-12-25 03:04:19
6 2013-12-26 03:02:19
7 2013-12-26 03:03:19
我有另一个表名(错误),如下所示:

id dateAdded
----------------------------
1 2013-12-24 03:03:19
2 2013-12-24 03:04:19
3 2013-12-24 03:06:14
4 2013-12-24 03:07:23
5 2013-12-25 03:04:19
6 2013-12-26 03:02:19
7 2013-12-26 03:03:19
id date
----------------------------
11 2013-12-24 03:03:19
22 2013-12-24 03:04:19
33 2013-12-25 03:06:14
53 2013-12-25 03:04:19
62 2013-12-26 03:02:19
身份证日期
----------------------------
11 2013-12-24 03:03:19
22 2013-12-24 03:04:19
33 2013-12-25 03:06:14
53 2013-12-25 03:04:19
62 2013-12-26 03:02:19
我想计算两个表(info和error)中有多少ID具有相同的日期,因此结果将是:

date countinfo counterror
----------------------------------------
2013-12-24 4 2
2013-12-25 1 2
2013-12-26 2 1
日期计数信息计数器
----------------------------------------
2013-12-24 4 2
2013-12-25 12
2013-12-26 2 1

如果您能帮助我完成Mysql查询,请尝试以下纯Mysql方法:

SELECT dateAdded, COUNT(*) as count_info FROM info GROUP BY dateAdded;
SELECT date, COUNT(*) as count_error FROM error GROUP BY date;

尝试一下,也许可以用更好的方式编写,但这会提供所需的输出

SELECT
DATE(Sub.dateadded) as `Date`,
(   SELECT count(id) 
    FROM test.info 
    WHERE DATE(info.dateadded)=DATE(Sub.dateAdded)) as `CountInfo`,
(   SELECT count(id) 
    FROM test.`error` 
    WHERE DATE(`error`.`date`)=DATE(Sub.dateAdded)) as `ErrorInfo`
FROM
(
SELECT `date` as dateadded 
from test.`error`
UNION SELECT  dateadded 
FROM test.info
) Sub
GROUP BY Date(Sub.dateadded)
请注意,这里使用的数据库名称是
test
,请将其更改为您的数据库名称

由于日期字段来自不同的表,因此必须在子查询中
UNION
它们,以便获得相关的日期。然后,使用dateparameter在select中执行一个简单的子查询

将来,尝试使用非数据类型或函数的名称来命名表名称等,这样就不需要使用`来包装数据库、表和列名

编辑

如果您想要特定的日期,只需使用
WHERE

将此行添加到
分组依据

WHERE DATE(Sub.dateadded) IN ('2013-12-24','2013-12-25')
如果你想在一段时间内完成,你可以这样做

WHERE DATE(Sub.dateadded) BETWEEN '2013-12-24' AND '2013-12-30'

这将给出12月24日至30日之间的可用日期。

试试这个,请重命名我提供的表名

信息:联接两个表获取不同Id的计数

    select Date(dateadded) as datepart, 
    count(distinct(infotable.id)) as countInfo, 
    count(distinct(errortable.id)) as counterror from infotable inner join errortable
    on Date(infotable.dateadded)=Date(errortable.date)
    group by datepart

这在PHP中可能更容易实现。只需选择所需的行,遍历它们,并增加一个关联数组
'date'=>'count'
。我不能在mysql中使用它吗?我正在编写一个查询,需要一些时间,因为我需要将它们全部插入我的数据库….@user3150060请确认答案是否正确。这就是它的工作原理。因此,当有人和你有相同的问题时,你可以很容易地看到正确的解决方案是什么。谢谢。是的,我已标记为更正。列名已添加到信息表中。您的意思是我需要两个select语句来执行此操作,我不能使用一个select语句?我认为您必须使用具有union的子查询。当您加入子查询时,您必须给它一个名称。如果你愿意,你可以叫它苏珊。但是,您必须在子查询中写入Susan.dateAdded。这是为了让数据库知道在哪里查找我得到了重复的结果?哇,我忘了添加
分组依据
。检查更新是否有效谢谢:)太好了!然后,您可以将其设置为正确答案。它应该是一个
左联接
,即使如此,这意味着相同的日期必须出现在两个不同的表中,而它们不会出现,因此如果它只存在于其中一个表中,则将错过日期。它工作了,但没有给出所有结果?这是因为要使其工作,所有日期都必须在两个表中。这就是为什么需要一个工会来实现这一目标