Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 按ID和时间戳计算多个表中的行数_Php_Mysql_Sql - Fatal编程技术网

Php 按ID和时间戳计算多个表中的行数

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的“

我面临着一个我无法解决的任务

首先,我有一个mysql数据库,其中有针对每种类型的用户生成内容(如博客、照片和视频)的详细表。这些表格大致相似,如下所示:

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웃: 谢谢我认为在outer
where
子句中应用时间戳过滤器是可以的。你是对的<代码>:)我的想法是相反的,因为我误解了这个问题,所以我又读了一遍。呵呵
+1
您还需要为子查询中的每个select添加
时间戳
,以完成要求。一旦添加了时间戳,您现在可以计算日期范围,
SUM(如果时间戳在xx和yy之间,则为1,否则为0结束)
@JW웃: 谢谢我认为在outer
where
子句中应用时间戳过滤器是可以的。你是对的<代码>:)我的想法是相反的,因为我误解了这个问题,所以我又读了一遍。嘿,什么?他将时间戳以秒为单位存储为历元格式。两个
s并不表示两个相同的值。呸!好啊我将删除注释:)嗯,什么?他将时间戳以秒为单位存储为历元格式。两个
s并不表示两个相同的值。呸!好啊我将删除注释:)