- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, форумчане.
Подскажите пожалуйста как лучше сделать?
Создается ордер на покупку 100 монет.
Но так как в базе суммы разные , необходимо брать каждую строку пока не станет 100..
пример.
в таблице table есть столбец summ
id 1 summ 15
id2 summ 25
id 3 summ 115
Общее значение summ 155
Мне необходим запрос чтоб вычесть 110 из имеющихся строк
Проще говоря останется в id 1 = 0 id 2 = 0 id 3 = 45
как реализовать данный запрос?
Мне необходим запрос чтоб вычесть 110 из имеющихся строк order by id
Проще говоря останется в id 1 = 0 id = 0 id 3 = 45
Нифига это не проще, скорее непонятнее.
Нифига это не проще, скорее непонятнее
Задача удалить из таблицы 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);
У вас архитектура в БД сомнительная очень. Табличка у вас похоже на лог транзакций, тогда вам ничего не надо ни от куда отнимать, а просто добавить строку с -70.
Так же сделать какую то другую табличку от куда будете читать общее значение, и при вставке в лог транзакций обновлять и общее поле.
Если я ошибся, то почему у вас в табличке 3 записи в которые надо внести изменение? Расшарьте задачу подумаем как грамотнее реализовать, пока по вашему описанию вы придумываете костыль. Как минимум непонятно зачем вам три строки, а не одна.
У вас архитектура в БД сомнительная очень. Табличка у вас похоже на лог транзакций, тогда вам ничего не надо ни от куда отнимать, а просто добавить строку с -70.
Так же сделать какую то другую табличку от куда будете читать общее значение, и при вставке в лог транзакций обновлять и общее поле.
Если я ошибся, то почему у вас в табличке 3 записи в которые надо внести изменение? Расшарьте задачу подумаем как грамотнее реализовать, пока по вашему описанию вы придумываете костыль. Как минимум непонятно зачем вам три строки, а не одна.
это просто выше я дал пример для понимания.
Просто думал есть какой нибудь запрос получить сразу строки с нужным числом.
SELECT * FROM `t` WHERE `summ` =50 LIMIT 0 , 30 выберет конкретные значения где есть 50
Мне же просто нужно получить именно мою сумму.
Если есть три строки, пусть это будет 3 человека.
Каждый имеет 50 рублей, мне нужно занять 120 рублей, но у одного нет такой суммы, по этому у первого и второго,
забираем в долг все деньги что есть. А у третьего берем не достающие 20, а 30 остается у третьего.
Берёте любой язык программирования, делаете запрос к БД и получаете все строки, далее в цикле проходите каждую строку и вычитаете сколько нужно. Смысла городить сложные запросы и процедуры на MySQL нет.
Да получить все строку не проблема, просто думал реализовать как проще. Но похоже проще не получится. )))
выбрать все циклом вообще не сложно.
$result = $mysqli->query('SELECT * FROM `t`'); // запрос на выборку
while($row = $result->fetch_assoc())// получаем все строки в цикле
{ }
Придется построчно обрабатывать, хотел одним запросом у первого и второго запроса будет 0
а третьему придется минусовать и возвращать остаток.
Придется построчно обрабатывать, хотел одним запросом у первого и второго запроса будет 0
а третьему придется минусовать и возвращать остаток.
Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Мне же просто нужно получить именно мою сумму.
Если есть три строки, пусть это будет 3 человека.
Каждый имеет 50 рублей, мне нужно занять 120 рублей, но у одного нет такой суммы, по этому у первого и второго,
забираем в долг все деньги что есть. А у третьего берем не достающие 20, а 30 остается у третьего.
У вас структура БД для такой задачи ужасная. Никто так не делает. Делайте как вам выше советовали одну таблицу с балансом пользователей, а другую таблицу с транзакциями. В первую записываете итоговый баланс пользователя после манипуляций, а во вторую прибавления и вычитания по пользователю. Сами транзакции делаете на PHP, либо через процедуры и функции MySQL (но так в разы сложнее).
Главное в самом запросе UPDATE миносовать данные, а не тупо делать UPDATE на новые, иначе если в этот момент у кого-то будет пополнение то оно слетит из-за вашей обработке. В масштабных проектах так не делается. Это беда.
Делаются транзакции и лог всех действий (+/-), и уже потом по ним баланс подбивается.
Это делает для личного использования, а таблица взята из сети для примера.
В таблице лежит сумма, в каждой строке сумма разная.
Задача набрать сумму и удалить пустые строки в таблице.
Решил с помощью PHP задачу.
Хотя насколько оно правильно не знаю.
Делается запрос в базу, выбирается в цикле весь столбец (id и summ ) , к сожалению как выбрать именно нужное количество строк я не знаю.
Дальше в цикле проверяю нужную сумму в каждой строке. пример ниже
id autoincrement summ ячейка данных
Работает нормально, но еще необходимо сделать чтоб выбирать не весь столбец, а диапазон.
Но тут думаю сделать условие where summ < $tcrow;
Выборка произойдет до суммы не превышающей запрошенную.
Проверил сумму 0.00012