Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Ну это само собой, иначе будет просто обнуление значения. Нам надо обнулить все которые будут меньше общей суммы 100.
требуемая к удалению сумма, к примеру 100
UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =10;
UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =80;
UPDATE `criptobot`.`birbot` SET `volcoin` = '40' WHERE `birbot`.`volcoin` =50;
Мы сделали 100. Последний отнимает не достающую сумму а остаток возвращает в базу.
У вас структура БД для такой задачи ужасная. Никто так не делает. Делайте как вам выше советовали одну таблицу с балансом пользователей, а другую таблицу с транзакциями. В первую записываете итоговый баланс пользователя после манипуляций, а во вторую прибавления и вычитания по пользователю. Сами транзакции делаете на PHP, либо через процедуры и функции MySQL (но так в разы сложнее).
У меня в базе много таблиц, просто у меня бот в этой таблице должен забирать произвольные суммы и перемещать в историю сделок. а эти
данные убирать из базы совсем.
Можно даже сразу удалять в место UPDATE если `summ` ='0
Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Это делает для личного использования, а таблица взята из сети для примера.
В таблице лежит сумма, в каждой строке сумма разная.
Задача набрать сумму и удалить пустые строки в таблице.
Решил с помощью PHP задачу.
Хотя насколько оно правильно не знаю.
Делается запрос в базу, выбирается в цикле весь столбец (id и summ ) , к сожалению как выбрать именно нужное количество строк я не знаю.
Дальше в цикле проверяю нужную сумму в каждой строке. пример ниже
id autoincrement summ ячейка данных
Необходимо 120
(id 1 summ= 1) от 120-1=119 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 1
(id 2 summ= 3) от 119-3=116 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 3
(id 3 summ= 5) от 116-5=111 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 5
(id 4 summ= 7) от 111-7=104 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 7
(id 5 summ= 10) от 104-10=94 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 10
(id 6 summ= 15) от 94-15=79 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 15
(id 7 summ= 20) от 79-20=59 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 20
(id 8 summ= 30) от 59-30=29 UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = 30
Не хватает 29 монет, берем их в id = 9
(id 9 summ= 50) от 29-50=21 UPDATE `test2022`.`t2` SET `summ` =' 21' WHERE `t`.`summ` = 50
Предложено по запросу=141
$tcrow=120; #Сумма которую нам необходимо извлечь
$result = $mysqli->query('SELECT `t2`.`id`,`t2`.`summ` FROM `t2` where id order by id asc '); while($row = $result->fetch_assoc())// получаем все строки в цикле по одной { $id = $row['id'] ; $summm= $row['summ'];
if( $tcrow > $summm){ $quer= "UPDATE `test2022`.`t2` SET `summ` = '0' WHERE `t`.`summ` = ". $row['summ']; } else {
Ilya74#: Берёте любой язык программирования, делаете запрос к БД и получаете все строки, далее в цикле проходите каждую строку и вычитаете сколько нужно. Смысла городить сложные запросы и процедуры на MySQL нет.
Да получить все строку не проблема, просто думал реализовать как проще. Но похоже проще не получится. )))
выбрать все циклом вообще не сложно.
$result = $mysqli->query('SELECT * FROM `t`'); // запрос на выборку
while($row = $result->fetch_assoc())// получаем все строки в цикле
{ }
Придется построчно обрабатывать, хотел одним запросом у первого и второго запроса будет 0
а третьему придется минусовать и возвращать остаток.
У вас архитектура в БД сомнительная очень. Табличка у вас похоже на лог транзакций, тогда вам ничего не надо ни от куда отнимать, а просто добавить строку с -70. Так же сделать какую то другую табличку от куда будете читать общее значение, и при вставке в лог транзакций обновлять и общее поле.
Если я ошибся, то почему у вас в табличке 3 записи в которые надо внести изменение? Расшарьте задачу подумаем как грамотнее реализовать, пока по вашему описанию вы придумываете костыль. Как минимум непонятно зачем вам три строки, а не одна.
это просто выше я дал пример для понимания.
Просто думал есть какой нибудь запрос получить сразу строки с нужным числом.
SELECT* FROM`t` WHERE`summ`=50 LIMIT0,30 выберет конкретные значения где есть 50
Мне же просто нужно получить именно мою сумму.
Если есть три строки, пусть это будет 3 человека.
Каждый имеет 50 рублей, мне нужно занять 120 рублей, но у одного нет такой суммы, по этому у первого и второго,
забираем в долг все деньги что есть. А у третьего берем не достающие 20, а 30 остается у третьего.
Я раньше где только не был, от Захоста, джино, ihc, и еще десяток разных.
Сейчас я на firstvds. Из Минусов поддержка платная, но я решал всегда проблемы, платить приходилось за перенос vds на новый, так как раньше самому было долго.
Был на тарифе улет, сайтов было около 200, сейчас осталось 5-6 сайтов, забросил все онлайн, в данный момент.
Сейчас тариф скинул ниже, разгон, без панели.
С панелью выйдет рублей 600 в месяц, первый месяц панель бесплатно.
Возможно у меня трафика на сайтах крохи, по этому ничего не глючит.
Панель ISP лайт, решает все поставленные задачи.
Приглядитесь, может и вам он пойдет, в любом случае выбор за вами.
Только самое главное не берите тарифы с OVZ. Только KVM.
Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Ну это само собой, иначе будет просто обнуление значения. Нам надо обнулить все которые будут меньше общей суммы 100.
требуемая к удалению сумма, к примеру 100
UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =10;
UPDATE `criptobot`.`birbot` SET `volcoin` = '0' WHERE `birbot`.`volcoin` =80;
UPDATE `criptobot`.`birbot` SET `volcoin` = '40' WHERE `birbot`.`volcoin` =50;
Мы сделали 100. Последний отнимает не достающую сумму а остаток возвращает в базу.
У вас структура БД для такой задачи ужасная. Никто так не делает. Делайте как вам выше советовали одну таблицу с балансом пользователей, а другую таблицу с транзакциями. В первую записываете итоговый баланс пользователя после манипуляций, а во вторую прибавления и вычитания по пользователю. Сами транзакции делаете на PHP, либо через процедуры и функции MySQL (но так в разы сложнее).
У меня в базе много таблиц, просто у меня бот в этой таблице должен забирать произвольные суммы и перемещать в историю сделок. а эти
данные убирать из базы совсем.
Можно даже сразу удалять в место UPDATE если `summ` ='0
Просто думал сделать как то проще.
А проще не получается.
Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Это делает для личного использования, а таблица взята из сети для примера.
В таблице лежит сумма, в каждой строке сумма разная.
Задача набрать сумму и удалить пустые строки в таблице.
Решил с помощью PHP задачу.
Хотя насколько оно правильно не знаю.
Делается запрос в базу, выбирается в цикле весь столбец (id и summ ) , к сожалению как выбрать именно нужное количество строк я не знаю.
Дальше в цикле проверяю нужную сумму в каждой строке. пример ниже
id autoincrement summ ячейка данных
Работает нормально, но еще необходимо сделать чтоб выбирать не весь столбец, а диапазон.
Но тут думаю сделать условие where summ < $tcrow;
Выборка произойдет до суммы не превышающей запрошенную.
Проверил сумму 0.00012
Берёте любой язык программирования, делаете запрос к БД и получаете все строки, далее в цикле проходите каждую строку и вычитаете сколько нужно. Смысла городить сложные запросы и процедуры на MySQL нет.
Да получить все строку не проблема, просто думал реализовать как проще. Но похоже проще не получится. )))
выбрать все циклом вообще не сложно.
$result = $mysqli->query('SELECT * FROM `t`'); // запрос на выборку
while($row = $result->fetch_assoc())// получаем все строки в цикле
{ }
Придется построчно обрабатывать, хотел одним запросом у первого и второго запроса будет 0
а третьему придется минусовать и возвращать остаток.
У вас архитектура в БД сомнительная очень. Табличка у вас похоже на лог транзакций, тогда вам ничего не надо ни от куда отнимать, а просто добавить строку с -70.
Так же сделать какую то другую табличку от куда будете читать общее значение, и при вставке в лог транзакций обновлять и общее поле.
Если я ошибся, то почему у вас в табличке 3 записи в которые надо внести изменение? Расшарьте задачу подумаем как грамотнее реализовать, пока по вашему описанию вы придумываете костыль. Как минимум непонятно зачем вам три строки, а не одна.
это просто выше я дал пример для понимания.
Просто думал есть какой нибудь запрос получить сразу строки с нужным числом.
SELECT * FROM `t` WHERE `summ` =50 LIMIT 0 , 30 выберет конкретные значения где есть 50
Мне же просто нужно получить именно мою сумму.
Если есть три строки, пусть это будет 3 человека.
Каждый имеет 50 рублей, мне нужно занять 120 рублей, но у одного нет такой суммы, по этому у первого и второго,
забираем в долг все деньги что есть. А у третьего берем не достающие 20, а 30 остается у третьего.
Нифига это не проще, скорее непонятнее
Задача удалить из таблицы 100 монет, после всех операций останется 70 монет в (7, 70);
CREATE TABLE IF NOT EXISTS `t` (
`id` int(25) NOT NULL,
`summa` int(100) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Дамп данных таблицы `t`
INSERT INTO `t` (`id`, `summa`) VALUES
(1, 30),
(5, 50),
(6, 10),
(7, 80);
Тот openapi-sandbox.kucoin.com выдает вам ответ 401 Unauthorized
И Invalid KC-API-SIGN - что бы это ни значило.
Т.е. со скриптом все ок, но не ок со взаимодействием с тем сторонним хостом. Уж не знаю что и как там должно быть.
А у меня ошибку не выдает, вернее заголовки не получаю вообще.
А ошибка похоже с подписью в этой строке,
Уже десятки раз пробовал разные коды, и код с гитхаба, один фиг не удается подключиться.
Первый раз такая фигня с api.
Добрый день, подскажите что может быть за ошибка.
На балансе пусто, хотя при просмотре Статистика дохода по площадкам показывается сумма.UPD. Браузер сменил, стало нормально.
Я раньше где только не был, от Захоста, джино, ihc, и еще десяток разных.
Сейчас я на firstvds. Из Минусов поддержка платная, но я решал всегда проблемы, платить приходилось за перенос vds на новый, так как раньше самому было долго.
Был на тарифе улет, сайтов было около 200, сейчас осталось 5-6 сайтов, забросил все онлайн, в данный момент.
Сейчас тариф скинул ниже, разгон, без панели.
С панелью выйдет рублей 600 в месяц, первый месяц панель бесплатно.
Возможно у меня трафика на сайтах крохи, по этому ничего не глючит.
Панель ISP лайт, решает все поставленные задачи.
Приглядитесь, может и вам он пойдет, в любом случае выбор за вами.
Только самое главное не берите тарифы с OVZ. Только KVM.
,
Добрый день, подскажите куда сделать пуш домена зона net
надо продлить.
лежит тут evo.ru-tld.ru
danesconames.com