Php 按ID和时间戳计算多个表中的行数
我面临着一个我无法解决的任务 首先,我有一个mysql数据库,其中有针对每种类型的用户生成内容(如博客、照片和视频)的详细表。这些表格大致相似,如下所示:Php 按ID和时间戳计算多个表中的行数,php,mysql,sql,Php,Mysql,Sql,我面临着一个我无法解决的任务 首先,我有一个mysql数据库,其中有针对每种类型的用户生成内容(如博客、照片和视频)的详细表。这些表格大致相似,如下所示: USER_ID | TIMESTAMP | CONTENT_ID | CONTENT 1 | 1364978606| 1 | video_url_1 1 | 1364978606| 2 | video_url_2 每行包含一个发布的内容 问题是:我需要在每个表中计算每个用户ID的“
USER_ID | TIMESTAMP | CONTENT_ID | CONTENT
1 | 1364978606| 1 | video_url_1
1 | 1364978606| 2 | video_url_2
每行包含一个发布的内容
问题是:我需要在每个表中计算每个用户ID的“行”数,按时间戳周期(两个时间戳之间)过滤。之后,我需要按用户ID添加行数(视频中的总数加上照片中的总数加上博客中的总数),并仅显示五个最高结果,不包括一个或两个管理员用户ID
看起来不是很难,但我还不能编写任何有效的语法。首先,获取所需的所有行:
select user_id
, count(*)
from (
select user_id
, timestamp
from video
union all
select user_id
, timestamp
from photo
union all
select user_id
, timestamp
from blog
) SubQueryAlias
where user_id not in (6,7) -- assuming admin users 6 and 7
and timestamp between '2013-01-01' and '2013-04-01'
group by
user_id
order by
count(*) desc
limit 5
SELECT * FROM videos WHERE user_id = ? AND timestamp < ? AND timestamp > ?;
如果要为多个用户执行此操作,惰性方法将是一个包含数据库调用的
foreach
循环,正确的方法是将时间戳之间的所有结果作为关联数组获取,然后是横向数组。首先,获取所需的所有行:
SELECT * FROM videos WHERE user_id = ? AND timestamp < ? AND timestamp > ?;
如果要为多个用户执行此操作,惰性方法是使用
foreach
循环,其中包含数据库调用,正确的方法是将时间戳之间的所有结果作为关联数组获取,然后是横向数组。您可以添加所需的输出吗?您可以添加所需的输出吗?+1
您还需要为子查询中的每个选择添加时间戳
,以完成要求。一旦添加了时间戳,您现在可以计算日期范围,SUM(如果时间戳在xx和yy之间,则为1,否则为0结束)
@JW웃: 谢谢我认为在outerwhere
子句中应用时间戳过滤器是可以的。你是对的<代码>:)我的想法是相反的,因为我误解了这个问题,所以我又读了一遍。呵呵+1
您还需要为子查询中的每个select添加时间戳
,以完成要求。一旦添加了时间戳,您现在可以计算日期范围,SUM(如果时间戳在xx和yy之间,则为1,否则为0结束)
@JW웃: 谢谢我认为在outerwhere
子句中应用时间戳过滤器是可以的。你是对的<代码>:)我的想法是相反的,因为我误解了这个问题,所以我又读了一遍。嘿,什么?他将时间戳以秒为单位存储为历元格式。两个?
s并不表示两个相同的值。呸!好啊我将删除注释:)嗯,什么?他将时间戳以秒为单位存储为历元格式。两个?
s并不表示两个相同的值。呸!好啊我将删除注释:)