сумма строки $ на основе определенного поля времени, а не только всего

Этот код прекрасно работает для отображения списка бронирований на данный день и суммирует количество гостей и таблицы за весь день. Суммы все оговорки возвращены.

То, что я пытаюсь сделать или выяснить, — это способ получить итоги на основе определенных временных интервалов.
Например, сколько гостей и столов в 8:00, 9:00, 10:00 и т. Д ….

Я могу видеть, где рассчитываются суммы, но мне нужна помощь, чтобы добавить способ добавить переменную, чтобы смотреть на booking_time и сумму по часам, а не только суточную сумму.

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

Полный код, который извлекает данные и затем суммирует их:

<?php
// Clear reservation variable
$reservations ='';

if ($_SESSION['page'] == 1) {
$reservations = querySQL('all_reservations');
}else{
$reservations = querySQL('reservations');
}

// reset total counters
$tablesum = 0;
$guestsum = 0;

if ($reservations) {

//start printing out reservation grid
foreach($reservations as $row) {
// reservation ID
$id = $row->reservation_id;
$_SESSION['reservation_guest_name'] = $row->reservation_guest_name;
// check if reservation is tautologous
$tautologous = querySQL('tautologous');

echo "<tr id='res-".$id."'>";
echo "<td";
// daylight coloring
if ($row->reservation_time > $daylight_evening){
echo " class='evening noprint'";
}else if ($row->reservation_time > $daylight_noon){
echo " class='afternoon noprint'";
}else if ($row->reservation_time < $daylight_noon){
echo " class='morning noprint'";
}

echo " style='width:10px !important; padding:0px;'>&nbsp;</td>";
echo "<td id='tb_time'";
// reservation after maitre message
if ($row->reservation_timestamp > $maitre['maitre_timestamp'] && $maitre['maitre_comment_day']!='') {
echo " class='tautologous' title='"._sentence_13."' ";
}
echo ">";
echo "<strong>".formatTime($row->reservation_time,$general['timeformat'])."</strong></td>";
echo "<td id='tb_pax'><strong class='big'>".$row->reservation_pax."</strong>&nbsp;&nbsp;<span class='noprint'>";
$tablesum ++;
$guestsum += $row->reservation_pax;
}
}
?>

<?php echo $guestsum;?>&nbsp;&nbsp;<?php echo _guest_summary;?>

Хорошо, я подхожу ближе: смог получить итоговое значение и отобразить … хотя мне нужно сузить еще один параметр. Это дает мне общее количество гостей (booking_pax) для всех бронирований. Мне нужно сделать это к данной дате или сессии. На странице отображается только бронирование на выбранную дату, но скрипт считает все дни с бронированиями в 8:00.

Просто нужна помощь, чтобы сузить по сессиям уже созданную страницу на конкретную дату просмотра.

$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)'];
}

-1

Решение

Вам нужно генерировать серии с временным интервалом, при условии, что у вас есть таблица с более чем 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

Если вам нужно отфильтровать некоторые данные из резервирований, вам нужно добавить их в условие объединения.

Это основано на информации, которую вы предоставили (что не так много).

0

Другие решения

$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)'];
}

?>
0

По вопросам рекламы [email protected]