powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос в MySQL
8 сообщений из 8, страница 1 из 1
Запрос в MySQL
    #39246258
ADMINCHIKKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет всем!

Помогите с запросом, что-то не могу понять как.
Есть таблица с числами. Допустим вот такая, три поля. Первое ID, число которое прибавляется и поле - результат прибавления этого числа к тому что было до этого в TOTAL. Например так:

ID - Digit - TOTAL
===========
1 - 50 - 100
2 - 10 - 110
3 - 30 - 140
4 - 50 - 190
===========

и так далее. Видно что есть слагаемое, и сумма этого слагаемого и предыдущей суммы. Как как сделать одним запросом, чтобы добавить строку в базу, чтобы сразу вставилось число то которое мне надо и в TOTAL сумма этого числа и найденного последнего значения суммы (TOTAL) по ID? Думаю получилось объяснить что надо. За ранее спасибо!
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39246333
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, в лоб, по шагам
найдем Тотал по посл ID

SELECT t1.total
FROM MyTable as t1, (SELECT MAX(id) FROM MyTable) as t2
WHERE t2.id=t1.id INTO @MyTotal

InSERT INTO MyTable(Digit,Total) .... VALUES (@Digit, @Digit+@MyTotal)
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39246338
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа.. ну да одним запросом....
Код: sql
1.
2.
3.
4.
5.
/* @Digit -ваше вставляемое число */
INSERT INTO MyTable(`Digit`,`Total`)
SELECT @Digit, @Digit+t1.total 
FROM MyTable as t1, (SELECT MAX(id) as MaxId FROM MyTable) as t2 
WHERE t2.id=t2.MaxId
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39246931
ADMINCHIKKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, вроде общий понял смысл. Но на реальной задаче не получается что-то, так как она немного по-другому. Этот пример дал простой, чтобы понять смысл :)

Вот как сделать, если в этой таблице есть ID_VAR - это ID абонента и другие поля. Надо вставить новую строку, которая есть сумма последнего TOTAL и того что вставляю. Но только уже по ID_VAR (id абонента). У каждого абонента идёт свой счёт.

ID - ID_VAR - Digit - TOTAL - COMMENT - DATE
==============================
1 - 1005 - 50 - 100 - коммент - дата
2 - 1006 - 10 - 200 - коммент - дата
3 - 3000 - 30 - 300 - коммент - дата
4 - 1005 - 50 - 150 - коммент - дата
5 - 1006 - 10 - 210 - коммент - дата
6 - 3000 - 30 - 330 - коммент - дата
... и т.д ...
===========

То есть по логике сначала мне надо узнать последнее TOTAL нужного мне абонента, это:

select TOTAL from MyTable where ID_VAR='1005' order by ID desc limit 1;

тут я получаю последнее TOTAL - то, что мне надо (150), а после уже вставить его в MyTable под своим ID_VAR:

insert into MyTable ('ID_VAR', 'Digit', 'TOTAL', COMMENT', 'DATE' )

и вот тут как дальше

select (@ID_VAR, @Digit, @Digit+TOTAL, 'мой комментарий', now())

или как? Заранее спасибо!
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39247127
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так а что это меняет? ровно ничего, кроме where ID_VAR='1005'
вопрос то в чем?

Код: sql
1.
2.
3.
4.
5.
/* @Digit -ваше вставляемое число */
INSERT INTO MyTable(`id_var`,`Digit`,`Total`)
SELECT t1.id_var, @Digit, @Digit+t1.total  
FROM MyTable as t1, (SELECT MAX(id) as MaxId FROM MyTable WHERE ID_VAR='1005') as t2 
WHERE t2.id=t2.MaxId
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39247156
ADMINCHIKKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, ну да, точно. Я что-то удлинил, сделал так:

INSERT INTO MyTable(`id_var`,`Digit`,`Total`)
SELECT t1.id_var, @Digit, @Digit+t1.total
FROM MyTable as t1, (SELECT id as MaxId FROM MyTable WHERE ID_VAR='1005' order by id desc limit 1) as t2
WHERE t2.id=t2.MaxId

А в последней строке точно надо t2.id=t2.MaxId или t1.id=t2.MaxId

t1.id или t2.id в сравнении?
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39247176
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатка конечно
Код: sql
1.
WHERE t1.id=t2.MaxId
...
Рейтинг: 0 / 0
Запрос в MySQL
    #39247300
ADMINCHIKKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!!! Помог очень!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос в MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]