Здравствуйте. Подскажите, пожалуйста, почему сумма считается неверно? Код (PHP): $transfer_sum_day = array_sum(mysql_fetch_array(mysql_query("SELECT `price` FROM `payment_history` WHERE `date_payment`>NOW()-INTERVAL 24 HOUR"))); Я понимаю, что можно вывести все через цикл и подсчитать, но это будут 4 строчки кода, охота оптимизации в одной строке чтобы был подсчет. SUM у меня почему-то не работает.
Ну так что возвращает mysql_fetch_array ? 1 строку выборки, а вы хотите сразу все просуммировать. Тогда уже задайте суммирование прямо в запросе: Код (PHP): SELECT sum(`price`) FROM `payment_history` WHERE `date_payment`>NOW()-INTERVAL 24 HOUR И переходите с устаревшего расширения mysql на mysqli (там можно продолжать писать процедурным стилем, если что, без ООП) или PDO.
mkramer, не дал челу подумать даже (( И раз уж такие пляски то лучше будет так тогда для него Код (PHP): SELECT sum(`price`) `summ` FROM `payment_history` WHERE `date_payment`>NOW()-INTERVAL 24 HOUR
Код (PHP): $transfer_sum_day = mysql_result(mysql_query("SELECT SUM(`price`) FROM `payment_history` WHERE `date_payment`>NOW()-INTERVAL 24 HOUR")); Две строчки по 5,5 Должно быть две строчки, одна 1000 другая 5. Почитаю, перейду, благодарю за совет. Откуда Вы `summ` не понимаю, у меня такого нигде нет.
Странное условие Код (PHP): `date_payment`>NOW()-INTERVAL 24 HOUR Такое ощущение, что ваш запрос правильно может работать только если его запускать в 12 часов ночи
Salvat, однозначно тебе нужна майсиквельная функция sum(). Лично мне непонятно почему: ты используешь имя `price`, а ведь price переводится как "цена"! цену не суммируют. суммируют стоимость, которая обычно amount = price * quantity ты случайно не ошибся с колонкой? может от того и результат не соответствует ожиданиям. ты почему-то ожидаешь две строки. если тебе надо итог, почему две а не одна?! объясни. см. сомнения Andrey_mdev Andrey_mdev, странные у тебя ощущения. это работает всегда, НО в зависимости от типа `date_payment` это означает: DATE: платежи за сегодняшний день (по времени сервера) DATETIME: платежи за последние 24 часа что имел в виду автор, он может и сам не знать
Я рассуждал так: Название темы "Подсчет суммы за день". А этот запрос будет выводить все сегодняшние платежи и к ним добавлять часть вчерашних. Если конечно этот запрос не выполнять в 23:59:59 Ну или INTERVAL 24 HOUR это умная конструкция, которая сама отделит новые сутки от прошлых? Я просто не использовал ее.
…рассуждения о математической верности выпилены… В общем случае фраза "за день" неоднозначна. Это 24 часа от одной получночи до другой или это произвольные 24 часа? — зависит от контекста. ТС в своём запросе использовал выражение на SQL "за последние 24 часа", таким образом контекст обозначен, я считаю. Но возможен побочный эффект если тип DATE, я об этом написал выше.