Php 基于特定时间域的$row总和,而不仅仅是总计

Php 基于特定时间域的$row总和,而不仅仅是总计,php,mysql,sum,cumulative-sum,subtotal,Php,Mysql,Sum,Cumulative Sum,Subtotal,这段代码可以很好地显示给定一天的预订列表,并计算一整天的客人和桌子数量。返回的所有预订金额 我试图做的或想出来的是一种基于特定时间间隔得到总数的方法。 例如,8:00、9:00、10:00等时有多少客人和桌子 我可以看到计算总数的地方,但需要帮助添加一种方法来添加一个变量,以查看预订时间和按小时计算的总数,而不仅仅是每天的总数 $tablesum ++; $guestsum += $row->reservation_pax; <?php echo $g

这段代码可以很好地显示给定一天的预订列表,并计算一整天的客人和桌子数量。返回的所有预订金额

我试图做的或想出来的是一种基于特定时间间隔得到总数的方法。 例如,8:00、9:00、10:00等时有多少客人和桌子

我可以看到计算总数的地方,但需要帮助添加一种方法来添加一个变量,以查看预订时间和按小时计算的总数,而不仅仅是每天的总数

        $tablesum ++;
        $guestsum += $row->reservation_pax;
<?php echo $guestsum;?>&nbsp;&nbsp;<?php echo _guest_summary;?>

您需要生成具有时间间隔的序列,假设您有一个超过15行的表(我称之为lookup_table),您可以使用uservars来实现这一点

SELECT d.starttime, d.endtime, COUNT(r.id) AS total
FROM
    (
     SELECT
        @starttime := @starttime + INTERVAL 1 HOUR starttime,
        @endtime := @endtime + INTERVAL 1 HOUR endtime
     FROM
        lookup_table
     CROSS JOIN (SELECT @starttime := CURRENT_DATE + INTERVAL 7 HOUR,
                        @endtime := CURRENT_DATE + INTERVAL 8 HOUR - INTERVAL 1 SECOND) v
     LIMIT 15
    ) d
LEFT JOIN
    reservations r
    ON r.reservation_time BETWEEN d.starttime AND d.endtime
GROUP BY d.starttime, d.endtime
如果需要从保留中筛选出一些数据,则需要将其添加到联接条件中


这是基于您提供的信息(并不多)。

感谢您的回复,我认为这比我需要的要精明得多。因为我对php了解不多,所以我读了很多书。我模模糊糊地了解到,目前的脚本是将当天桌子上的所有客人数相加,并给出总客人数。我想做的是对每个可用的时段(时间)进行单独的总计。所以我不需要每说一次的间隔,也不需要毫无头绪的间隔。。。我只需要能够根据8:00、8:10、8:20等可用预订时段的数量计算客人。我正在尝试添加特定预订时间的预订总额。您能否提供表的DDL(使用
SHOW CREATE table
)以及一些示例数据和所需输出。别名为d的子查询的作用是生成时隙(
2014-10-26 08:00:00 | 2014-10-26 08:59:59…2014-10-26 22:00:00 | 2014-10-26 22:59:59
)。然后,在该间隔之间的reservation\u time上加入reservation表,假设reservation\u time为datetime DataType不确定如何将其作为注释发布,因此将尝试通过添加一些注释使其可读…如果这样做不正确,请道歉。预订| id |预订|日期|预订|时间|预订| pax1 | 2014年7月31日| 8:00:00 | 1。。。。2 | 7/31/2014 | 8:00:00 | 4 ..... 19 | 7/30/2014 | 8:10:00 | 3..... 20 | 7/30/2014 | 8:10:00 | 2我能做一些像这样简单的事情吗$guestsum2+=$row->
预订座位
其中
预订时间
='8:00';在做了一些研究之后,它看起来很简单,但我无法让条件工作……它抛出了错误,所以我的编码方式有点错误。分析错误:语法错误,意外的“`”,应为标识符(T_字符串)或变量(T_变量)或'{'或'$'因为我得到一些反馈,这是含糊不清的,对php不熟悉。我只需要能够根据列“预订时间”来计算客人。所以我想澄清一下,我试图做的是在另一个表行中添加预订时间或特定预订时间的总计。我已经阅读了一些项目,posts和php教程,但似乎无法将它们应用于此文件或起作用。做一些进一步的研究…我可以这样做吗?`从
reservations
groupby reservation\u time`中选择reservation\u time,sum(reservation\u pax)作为total\u mark,我尝试过,但似乎不知道如何包含在php文件中。
$result = mysql_query("SELECT SUM(reservation_pax) FROM reservations WHERE reservation_time = '8:00'"); 
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}

while($row = mysql_fetch_array($result))
{

   echo $row['SUM(reservation_pax)'];
}
SELECT d.starttime, d.endtime, COUNT(r.id) AS total
FROM
    (
     SELECT
        @starttime := @starttime + INTERVAL 1 HOUR starttime,
        @endtime := @endtime + INTERVAL 1 HOUR endtime
     FROM
        lookup_table
     CROSS JOIN (SELECT @starttime := CURRENT_DATE + INTERVAL 7 HOUR,
                        @endtime := CURRENT_DATE + INTERVAL 8 HOUR - INTERVAL 1 SECOND) v
     LIMIT 15
    ) d
LEFT JOIN
    reservations r
    ON r.reservation_time BETWEEN d.starttime AND d.endtime
GROUP BY d.starttime, d.endtime
$result = mysql_query("SELECT SUM(reservation_pax) FROM reservations WHERE reservation_time = '8:00:00' AND reservation_date = '2014-10-27' AND reservation_hidden ='0'") ; 
if($result === FALSE) {
    die(mysql_error()); // TODO: better error handling
}

while($row = mysql_fetch_array($result))
{
   echo $row['SUM(reservation_pax)'];
}

?>