我需要创建一个视图,显示一个表格,显示在特定日期创建的内容项目数,如下所示:
Date Items
2014-2-1 2
2014-2-2 3
2014-2-3 7
我使用聚合创建了一个视图,添加了以下字段:
然后我在发布日期添加了排序条件,其粒度设置为“日”,聚合类型为“将结果组合在一起”。不幸的是,我得到的结果是:
Date Items
2014-2-1 1
2014-2-1 1
2014-2-2 1
2014-2-2 1
2014-2-2 1
我错过了什么?
答案 0 :(得分:1)
问题是您的视图运行的查询实际上如下所示:
SELECT node.created AS node_created, COUNT(node.nid) AS nid, DATE_FORMAT((DATE_ADD('19700101', INTERVAL node.created SECOND) + INTERVAL 0 SECOND), '%Y%m%d') AS node_created_day
FROM
{node} node
WHERE (( (node.status = '1') AND (node.type IN ('page')) ))
GROUP BY node_created, node_created_day
ORDER BY node_created_day DESC
LIMIT 10 OFFSET 0
它是由node_created字段分组的,这是一个时间戳。
您有两个选择:
1)安装Views Date Format SQL模块
2)申请this patch
两种方法都会更改查询,因此日期实际上是使用MySQL格式化的,然后将此值用于分组。
视图日期格式SQL模块会将查询更改为:
SELECT COUNT(node.nid) AS nid, DATE_FORMAT((DATE_ADD('19700101', INTERVAL node.created SECOND) + INTERVAL 0 SECOND), '%Y-%m-%d') AS node_created, DATE_FORMAT((DATE_ADD('19700101', INTERVAL node.created SECOND) + INTERVAL 0 SECOND), '%Y%m%d') AS node_created_day
FROM
node node
WHERE (( (node.status = '1') AND (node.type IN ('page')) ))
GROUP BY node_created, node_created_day
ORDER BY node_created_day DESC
LIMIT 10 OFFSET 0
这与迈克的解决方案效果相同 - 但需要另一个模块,所以我会选择Mikes的答案......
答案 1 :(得分:0)
更新:这曾经适用于我的版本。然而,有些人似乎不是这样,所以我会留下它,以防它对某人有帮助,但其他答案可能更好。
如果您将“最小”汇总功能添加到“发布日期”,以确保按照排序条件保留粒度设置,您将获得所需的结果。
添加“最小”聚合函数会改变生成的SQL查询对结果进行分组的方式。这是之前和之后:
SELECT node.created AS node_created, COUNT(node.nid) AS nid, DATE_FORMAT((DATE_ADD('19700101', INTERVAL node.created SECOND) + INTERVAL 0 SECOND), '%Y%m%d') AS node_created_day
FROM
node node
WHERE (( (node.status = '1') AND (node.type IN ('dummyNode')) ))
GROUP BY node_created, node_created_day
ORDER BY node_created_day DESC
LIMIT 10 OFFSET 0
vs
SELECT COUNT(node.nid) AS nid, MIN(node.created) AS node_created, DATE_FORMAT((DATE_ADD('19700101', INTERVAL node.created SECOND) + INTERVAL 0 SECOND), '%Y%m%d') AS node_created_day
FROM
node node
WHERE (( (node.status = '1') AND (node.type IN ('dummyNode')) ))
GROUP BY node_created_day
ORDER BY node_created_day DESC
LIMIT 10 OFFSET 0
您可以看到'GROUP BY node_created'已删除。