Mysql 从多个表中获取时间戳计数
我有一个节点表:Mysql 从多个表中获取时间戳计数,mysql,join,count,timestamp,Mysql,Join,Count,Timestamp,我有一个节点表: nid type created status 2 blog 134292319 1 3 forum 134292536 1 4 blog 135921392 0 要绘制一段时间内已发布(status=1)节点的数量,我执行以下查询: SELECT created, type FROM node WHERE status = 1 ORDER BY created SELECT timestamp FROM comments INNER JOIN nod
nid type created status
2 blog 134292319 1
3 forum 134292536 1
4 blog 135921392 0
要绘制一段时间内已发布(status=1)节点的数量,我执行以下查询:
SELECT created, type
FROM node WHERE status = 1
ORDER BY created
SELECT timestamp
FROM comments
INNER JOIN node ON comments.nid = node.nid
WHERE
node.type = 'forum'
AND comments.status = 1
ORDER BY timestamp
然后,我在PHP中遍历了这个数据集,将其拆分为带有时间戳的组,每个组都有一个与之相关联的节点计数。结果是缓存的,因此执行速度慢不是问题
我还有一个意见表:
nid timestamp status
2 134292363 1
3 134293234 1
我想将论坛评论数合并到节点数图中
要获取注释计数,我将运行以下查询:
SELECT created, type
FROM node WHERE status = 1
ORDER BY created
SELECT timestamp
FROM comments
INNER JOIN node ON comments.nid = node.nid
WHERE
node.type = 'forum'
AND comments.status = 1
ORDER BY timestamp
我需要以某种方式将这两个查询结合起来,最终得到(对于给出的示例):
有什么想法吗
谢谢。这将为您提供示例输出,但根据您对问题的描述,我不确定它是否正是您想要的
SELECT created, type FROM
(
SELECT created, type
FROM node WHERE status = 1
UNION ALL
SELECT timestamp as created, 'forum_comment' as type
FROM comments
INNER JOIN node ON comments.nid = node.nid
WHERE node.type = 'forum'
AND comments.status = 1
) AS U
ORDER BY U.created
我不明白你所说的论坛评论数是什么意思。您的示例输出不显示计数。此外,输出是否仅应按
时间戳
/(已创建
)排序?是的,输出应按创建日期排序。MySQL不应该输出这样的计数;是PHP将实际结果转化为计数。也就是说,它遍历结果集,每次时间戳达到某个值时,它都会增加“组”-否则会将一个值添加到当前组的计数中。然后,与各自的时间戳相关联的计数存储在缓存表中。事实上,这正是我要查找的。从来没有听说过工会。干杯:D