我需要创建一个视图,该视图将显示一个表,该表将显示在某一天创建的内容的计数,如下所示:
Date Items
2014-2-1 2
2014-2-2 3
2014-2-3 7我创建了一个带有聚合的视图,添加了以下字段:
然后,我在Post date上添加了一个排序条件,粒度设置为"Day“,聚合类型设置为"Group”。不幸的是,我得到的结果是:
Date Items
2014-2-1 1
2014-2-1 1
2014-2-2 1
2014-2-2 1
2014-2-2 1我错过了什么?
发布于 2014-02-07 11:25:20
问题是您的视图正在运行的查询实际上如下所示:
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)安装视图日期格式SQL模块
2)应用这个补丁
这两种方法都更改了查询,因此日期实际上是用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这和Mike的解决方案有着同样的效果--但是需要另一个模块,所以我会用Mikes的答案来回答这个问题。
发布于 2014-02-07 10:46:29
更新:这曾经适用于我所拥有的版本。然而,对于某些人来说,情况似乎并非如此,所以我会把它留给别人,以防它对某人有帮助,但其他的答案可能会更好。
如果将“最小”聚合函数添加到“post date”中,确保将粒度设置保留在排序条件上,您将得到所需的结果。
添加“最小”聚合函数会改变生成的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您可以看到“组按node_created”被移除。
https://stackoverflow.com/questions/21619883
复制相似问题