Название: Выровнять баланс Отправлено: Stronglan от 05 Ноября 2014, 22:01:25 В платежах периодически видно следующее: "расхождения суммы платежей и баланса клиента" Подскажите можно ли это как-то исправить, в 50 версии знаю можно было.
Название: Re: Выровнять баланс Отправлено: Dolphin от 05 Ноября 2014, 22:58:12 Я вот так проверяю расхождение:
Код: SELECT u.*, SUM(p.`cash`) AS sum_cash FROM `pays` AS p LEFT JOIN `users` AS u ON u.`id`=p.`mid` GROUP BY p.`mid` HAVING `balance`!=`sum_cash` А так выравниваю: Код: INSERT INTO `tmp` SELECT `mid`, SUM(`cash`) FROM `pays` where `mid`!='0' group by `mid` Название: Re: Выровнять баланс Отправлено: ser970 от 06 Ноября 2014, 01:09:51 А так выравниваю: только не в данной ситуации....Код: INSERT INTO `tmp` SELECT `mid`, SUM(`cash`) FROM `pays` where `mid`!='0' group by `mid` UPDATE `users` SET `users`.`balance` не катит - в данном случае задача была обратной выровнять платежи по балансу. Название: Re: Выровнять баланс Отправлено: vddav от 06 Ноября 2014, 13:48:53 я делал как то так, бэкап и проверить в песочнице!!!
Код: drop table if exists balance_help; Название: Re: Выровнять баланс Отправлено: vddav от 06 Ноября 2014, 13:50:51 P.S. баланс клиента остается тот же, а платежах добавляется запись бонусным платежом
Название: Re: Выровнять баланс Отправлено: vddav от 06 Ноября 2014, 14:03:17 ошибка в строке
Код: SELECT u.id, u.balance, SUM(p.cash) AS chk_balance FROM users u LEFT JOIN pays p ON u.id=p.mid GROUP BY u.id HAVING `balance`!=`sum_cash`; Название: Re: Выровнять баланс Отправлено: ser970 от 06 Ноября 2014, 14:15:28 ошибка в строке Код: SELECT u.id, u.balance, SUM(p.cash) AS chk_balance FROM users u LEFT JOIN pays p ON u.id=p.mid GROUP BY u.id HAVING `balance`!=`sum_cash`; я скриптом решил надо было еще дату первого события .... + разница была как минус так и плюс Название: Re: Выровнять баланс Отправлено: vddav от 06 Ноября 2014, 15:59:07 ошибка в строке Код: SELECT u.id, u.balance, SUM(p.cash) AS chk_balance FROM users u LEFT JOIN pays p ON u.id=p.mid GROUP BY u.id HAVING `balance`!=`sum_cash`; я скриптом решил надо было еще дату первого события .... + разница была как минус так и плюс ну так при инсерте вычитается же из реального баланса, баланс по платежам , так же может быть +/-, а в первом запросе если добавить условие по времени, категории.., вообще запрос думался для округления баланса от копеек, точнее после его округления))). хотя когда то давным давно, в другой галактике, оперуполномоченые кришна просили в коробку округление))) Название: Re: Выровнять баланс Отправлено: ser970 от 06 Ноября 2014, 16:21:19 ну так при инсерте вычитается же из реального баланса, баланс по платежам , так же может быть +/-, а в первом запросе если добавить условие по времени, категории.., вообще запрос думался для округления баланса от копеек, точнее после его округления))). хотя когда то давным давно, в другой галактике, оперуполномоченые кришна просили в коробку округление))) надо было не условие по времениа скажем первый платеж или списание было 12.12.2000 разница по по суммам -12грн надо инсерт 11.12.200 +12грн или абон есть по платежам нету вообще суммы а разница -15... решать можно какими угодно путями , главное результат. Название: Re: Выровнять баланс Отправлено: vddav от 06 Ноября 2014, 17:44:44 Цитировать решать можно какими угодно путями , главное результат. абсолютно в дырочку);) Название: Re: Выровнять баланс Отправлено: Redmen от 05 Марта 2017, 16:46:18 может тема и устарела, но на всякий случай, вариант без вьюх и промежуточных таблиц!
запрос для выравнивания платежей к балансу: Код: INSERT INTO pays (`mid`, `cash`, `category`, `time`, `comment`, `creator`) Название: Re: Выровнять баланс Отправлено: Efendy от 05 Марта 2017, 17:42:30 Добавлю в FAQ
|