#php #html #mysql #sql #database
#php #HTML #mysql #sql #База данных
Вопрос:
Я просто хочу спросить, есть ли запрос, который извлекает данные из приведенной ниже таблицы следующим образом:-
Каждую неделю я хочу отображать общую сумму, уплаченную клиентом.Итак, я хочу еженедельно проверять деньги для каждого клиента.
Customer | Date |Money|
----------------------------------------------------------------------
Jhon 2014-07-01 22
Ammy 2014-07-02 25
Jhon 2014-07-03 21
Josh 2014-07-04 28
Josh 2014-07-05 30
Ammy 2014-07-06 211
Jhon 2014-07-07 217
Спасибо…
Комментарии:
1. Также добавьте свой код, в котором вы что-то пробовали
2. По сути, вы ограничиваете строки специальной недели с помощью a
WHERE clause
и функций даты и времени MySQL. Затем вы группируете по имени клиента иSUM
суммируете деньги.3. Я пробовал этот запрос для извлечения данных каждый месяц, где $ id — это значение из текстового поля, в котором выбирается Клиент, МЕСЯЦ (дата), СУММА (деньги) в качестве TotalPaid, ОТ Customer, Где MONTH (Date) = {$id} GROUP BY Customer»; но что мне нужно, так это то, что каждые недели проходит, я хочу, чтобы запрос отображал, хочу отображать общую сумму, уплаченную клиентом.
4. Вы должны определить начало и конец недели, чтобы можно было написать надежный запрос, который возвращает правильные данные.
Ответ №1:
вы можете сделать это с помощью GROUP BY
и WEEK
функции:
SELECT customer, WEEK(date) AS week, SUM(money) AS total
FROM table
GROUP BY customer, WEEK(date);
Вот sqlfiddle: http://sqlfiddle.com /#!2/f0754f/1
Если вы хотите получить их только за текущую неделю, вы можете добавить WHERE
предложение:
SELECT customer, WEEK(date) AS week, SUM(money) AS total
FROM table
WHERE WEEK(date) = WEEK(NOW())
GROUP BY customer, WEEK(date);
Ответ №2:
Ваш SQL
запрос должен быть таким:
Обновить
SELECT Customer, sum(Money) as TotalMoney from MoneyTable
WHERE `Date` BETWEEN DATE_ADD(NOW(), interval -1 WEEK) and NOW() group by Customer
Создайте PHP-скрипт и запускайте этот запрос каждую неделю и делайте с данными все, что вам нравится.
Теперь вопрос в том, как запускать его каждую неделю?
Если вы используете Linux, вы можете воспользоваться cron
сервисом. Настройте это следующим образом:
5 8 * * 6 php /my/script/location/script.php
Если вы используете Windows, попробуйте планировщик и запустите свой скрипт через bat
файл или что-то еще.
Надеюсь, это натолкнет вас на мысль. удачи!
Комментарии:
1. Я пробовал этот запрос для извлечения данных каждый месяц, где $ id — это значение из текстового поля, в котором выбирается Клиент, МЕСЯЦ (дата), СУММА (деньги) в качестве TotalPaid, ОТ Customer, Где MONTH (Date) = {$id} GROUP BY Customer»; но что мне нужно, так это то, что каждые недели проходит, я хочу, чтобы запрос отображал, хочу отображать общую сумму, уплаченную клиентом.
2. @lodev09: Вам также следует добавить столбец customer.
3. почему запрос должен быть ограничен указанным временем? Ваш ответ был верен, если задание CRON выполняло скрипт постоянно, поминутно, но, когда задание CRON выполняет еженедельное выполнение, простого запроса было бы достаточно…
4. @MostafaTalebi Этот ответ намного лучше вашего. Возможно, не по расписанию.
5. @MostafaTalebi Этого будет недостаточно, потому что он получит все остальные деньги с предыдущих дат.
Ответ №3:
Ваш вопрос неясен…Я полагаю, вы хотите получить данные за одну неделю
SELECT sum(Money) as TotalPaid FROM yourtable
WHERE Date between date_sub(now(),INTERVAL 1 WEEK) and now();
Если вам нужно получить две недели, используйте что-то вроде этого
SELECT 'last week' AS week, COUNT(*) AS rows
FROM table_name
WHERE date_logged >= CURDATE() - INTERVAL 6 DAY
AND date_logged < CURDATE() INTERVAL 1 DAY
UNION ALL
SELECT 'previous week' AS week, COUNT(*) AS rows
FROM table_name
WHERE date_logged >= CURDATE() - INTERVAL 13 DAY
AND date_logged < CURDATE() - INTERVAL 6 DAY ;
Комментарии:
1. Я пробовал этот запрос для извлечения данных каждый месяц, где $ id — это значение из текстового поля, в котором выбирается Клиент, МЕСЯЦ (дата), СУММА (деньги) в качестве TotalPaid, ОТ Customer, Где MONTH (Date) = {$id} GROUP BY Customer»; но что мне нужно, так это то, что каждые недели проходит, я хочу, чтобы запрос отображал, хочу отображать общую сумму, уплаченную клиентом.