- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, форумчане.
Подскажите пожалуйста как лучше сделать?
Создается ордер на покупку 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