【发布时间】:2016-04-21 08:01:50
【问题描述】:
我必须从 mysql 表中计算几个日期范围(今天、一周、一个月)中的行数。
目前我在我的 PHP 脚本中运行一个循环,并对每个日期范围进行单独的查询,我知道这是个坏主意。
<?php
$now = "2016-04-21";
$today = $now;
$week = date( 'Y-m-d', strtotime( '-7 day', strtotime( $now ) ) );
$month = substr( $now, 0, 7 );
$res1 = mysql_query("SELECT SUM(pageview) FROM statistics WHERE user = '$id' AND DATE_FORMAT( date, '%Y-%m-%d' ) = '$today'" );
$res2 = mysql_query("SELECT SUM(pageview) FROM statistics WHERE user = '$id' AND ( t.date BETWEEN ( '$week' ) AND ( '$today' ) )");
$res3 = mysql_query("SELECT SUM(pageview) FROM statistics WHERE user = '$id' AND DATE_FORMAT( t.date, '%Y-%m' ) = '$month'" );
所以我想使用 SINGLE QUERY 来做到这一点。
我找到了 count rows in multiple date ranges 和 query for grabbing multiple date ranges,但我不确定哪个是最好的,以及在我的情况下该怎么做
【问题讨论】:
-
你能解释一下表的结构吗?你有什么专栏?等等,这样我就可以更好地了解您在做什么。
-
表格有 4 列“id int(10) autoincrement primary”、“date date”、“user varchar(32) index”和“pageview int(10)”。在浏览量中存储每日浏览量的总数
-
好吧,所以每一行都是一个有很多页面浏览量的用户,你可能会有很多这样的行,然后你想计算你在过去一个月、过去一周和过去一天,对吗?另外,您提到您当前正在执行循环。您的意思是您将用户的页面浏览量 1 个 1 加在一起吗?