Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с одной таблицей (двойные запросы), высчитать сумму, удалить дубликаты 
:(
    Опции темы
numerovan
Дата 24.1.2017, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Здравствуйте. Как можно преобразовать данные таблицы таким образом, чтобы в ней содержались ТОЛЬКО транзакции-расходы. То есть, все транзакции-возвраты должны быть учтены в предшествующих им транзакциях-расходах.

Пример. Дамп данных содержит две следующие транзакции.
user posted image

Где транзакция ID 31769 – расход, а ID 31768 возврат по этой транзакции.
В результате преобразования, транзакция ID 31769 должна иметь объем 65,56, а транзакция ID 31768 должна быть удалена.

user posted image
PM MAIL   Вверх
Akina
Дата 25.1.2017, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Правильное решение - это копирование данных с одновременной агрегацией по описанному алгоритму в другую (временную) таблицу, после чего перенос результата в базовую (либо переименование таблиц).
Дело в том, что обновление и удаление нельзя выполнить одним запросом. Значит, два запроса. Можно, конечно, это проделать в рамках одной  транзакции - но ресурсов (и соответственно времени) такой подход съест в разы больше.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
numerovan
Дата 25.1.2017, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Значит так лучше сделать:

1. взять записи исходя из номера карты и услуги - суммировать их
2. удалить записи с положительными цифрами исходя из номера карты и услуги - уберем тем самым лишнее
3. обновить записи

?
PM MAIL   Вверх
Zloxa
Дата 25.1.2017, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



1) Может ли быть приобретена одна и та же услуга более одного раза в один день, по одной карте, на одной и той же заправочной станции?
2) Действительно ли необходимо преобразовывать данные таблицы? Ведь один раз изменив их, мы потеряем информацию навсегда. Не тот ли тут случай, когда достаточно поправить лишь отчетец?

Это сообщение отредактировал(а) Zloxa - 25.1.2017, 18:06


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1180 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.