SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.03.2010 19:48:35

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Запрос, вычисление суммы нарастающим итогом

Запрос, вычисление суммы нарастающим итогом [Решено]

Есть таблица Касса, в которой три поля (дата, приход, расход). Требуется для каждой даты вычислить остаток в кассе с учетом приходов и расходов предыдущих дней.

Отредактированно aliputin (17.03.2010 13:38:50)


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#2 10.03.2010 20:56:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Запрос, вычисление суммы нарастающим итогом

SELECT sum(`приход`)-sum(`расход`) as `остаток` FROM `таблица` WHERE `дата` < 'значение даты';

Неактивен

 

#3 11.03.2010 06:13:08

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Запрос, вычисление суммы нарастающим итогом

Ваш запрос возвращает одну запись. Мне же нужны остатки на каждую дату, т.е. то же число записей.


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#4 11.03.2010 12:44:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос, вычисление суммы нарастающим итогом

SELECT @sum := 0;
SELECT `date`, @sum := @sum + income - expenditure AS `sum`
FROM tablename
ORDER BY 1;

Неактивен

 

#5 12.03.2010 08:20:35

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Запрос, вычисление суммы нарастающим итогом

paulus
Спасибо, получилось. А как бы это оформить представлением? У меня выдает ошибку: View's SELECT contains a variable or parameter.

Отредактированно aliputin (12.03.2010 08:21:33)


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#6 12.03.2010 11:15:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Запрос, вычисление суммы нарастающим итогом

Никак. В определении представления нельзя использовать системные и пользовательские переменные.

Неактивен

 

#7 12.03.2010 12:25:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос, вычисление суммы нарастающим итогом

Можете оформить хранимой процедурой. Вполне адекватное решение.

Неактивен

 

#8 13.03.2010 07:10:04

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Запрос, вычисление суммы нарастающим итогом

Хранимая процедура выдает мне две таблицы: в одной @sum, во второй - то, что нужно. Мне бы только вторую таблицу, без первой. Можно ли сделать это как-нибудь?

Дело в том, что я тяну эти данные в PHP-скрипт. Обычно я работаю с ХП и представлениями, которые выдают одну таблицу. Я не знаю, как работать с результатом в две таблицы.

Отредактированно aliputin (13.03.2010 08:09:14)


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#9 13.03.2010 16:09:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос, вычисление суммы нарастающим итогом

Первый SELECT замените на SET @sum := 0 — тогда он не будет возвращать
resultset. А вообще, PHP, вроде бы, умеет вытаскивать несколько результатов
через mysqli.

Неактивен

 

#10 17.03.2010 13:36:33

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Запрос, вычисление суммы нарастающим итогом

Спасибо.
Тему можно закрыть.


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson