计算在接下来的7天内在同一天预订的所有人

时间:2014-03-15 07:05:37

标签: mysql sql database

我已经设置了一日游的预订系统,收集预订人数 - 成人和孩子们,当然还有旅游日期。旅行中的最大总人数限制在40人。

在我的“预订”表中,我有“ID”,“tourDate”,“erwachs”(成年人),“kinder”(儿童)以及更多的数据存储。

我现在拥有的是:

$query = "SELECT * FROM buchung
        where tourDatum >= curdate()
                and tourDatum <= curdate() + INTERVAL 7 DAY 
GROUP BY tourDatum";
$result = mysql_query($query);

$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"tourDatum");
$adult=mysql_result($result,$i,"erwachs");
$children=mysql_result($result,$i,"kinder");
$free=(40 - ($adult+$children));
echo "Tour Date - Spaces<br/>$first - $free <br/>";
$i++;}

但这并没有收集所有预订的空间


嗨,谢谢你的回答。不幸的是,这对我不起作用。上面的代码不起作用。我现在使用了以下代码:

$query = "SELECT * FROM buchung
where tourDate >= curdate()
and tourDate <= curdate() + INTERVAL 7 DAY GROUP BY tourDate";
$result = mysql_query($query);
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"tourDATE");
$adult=mysql_result($result,$i,"adults");
$children=mysql_result($result,$i,"children");
free=(40 - ($adult+$children));
echo "Tour Date - Spaces<br/>$first - $free <br/>";
$i++;}

但这并没有总结当天预订的所有人。任何想法如何总结给定日期之间的所有数字,按天分组。

解释: 让我们说 25.03.2014

  • 一次预订:2名成人和1名儿童
  • 一次预订:4名成人和2名儿童

所以结果应该是:

6名成人+ 3名儿童= 9人。

当然,它们应该从最多40个人中扣除,当天显示的结果应为31个。

1 个答案:

答案 0 :(得分:1)

SELECT
    date_format(tourDate,'%Y-%m-%d') AS 'tour date',
    (40 - (count(adults) + count(children))) AS 'free spaces'
FROM booking
where date_format(tourDate,'%Y-%m-%d') >= curdate()
    and date_format(tourDate,'%Y%m%d') <= curdate() + INTERVAL 7 DAY 
GROUP BY date_format(tourDate,'%Y-%m-%d')