Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование значений и присвоение результата / 4 сообщений из 4, страница 1 из 1
28.02.2004, 13:17
    #32425117
Blum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений и присвоение результата
Господа, я пользовался поиском и знаю, что проблема не нова\r
\r
T-SQL\r
и\r
Update запрос\r
НО: очень хочется решить следующую проблему на \'чистом\' SQL, поскольку исполняться это будет движком BDE, который ни черта почти не понимает и фишки типа ... ON DUPLICATE KEY UPDATE ... не проходят.\r
\r
Проблема такова:\r
\r
В таблице хранятся записи \'обычные\' и \'результирующие\', отличающиеся соответственно лишь признаком Sum: Boolean. Делается вроде как для ускорения работы. Хочется в (желательно одном )SQL запросе реализовать следующее:\r
\'сложить значения поля для всех записей совпадающих по определённым признакам и проапдейтить\' эту же таблицу по полю-сумме (т.е. с Sum = true).\r
\r
Примерно так:\r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
\r
 1 ) Просуммировать значение по критерию\r
( -- Например SELECT (SUM(F1), Sum(F2), SUM(F3)) FROM MYTable \r
 
WHERE (Criteria = TRUE) AND Sum = false  --)\r
 
\r
 2 ) Сделать UPDATE той записи, у котоорой Sum = true этими просуммированными значениями\r
\r
Это можно хорошо реализовать INSERT\'ом:\r
\r
Код: plaintext
1.
2.
3.
4.
5.
\r
INSERT INTO MYTable (F1, F2, F3) (\r
SELECT (SUM(F1), Sum(F2), SUM(F3), true) FROM MYTable \r
WHERE (Criteria = TRUE) AND Sum = false\r
)\r
\r
Но тогда перед вставкой придется удалять предыдущую запись, что есть несколько нерационально...\r
\r
Можно ли как-то все-таки сделать это UPDATE\'ом?
...
Рейтинг: 0 / 0
01.03.2004, 21:03
    #32427071
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений и присвоение результата
посмотри команду replace, может быть подойдет
...
Рейтинг: 0 / 0
23.04.2004, 15:58
    #32494517
Blum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений и присвоение результата
Нет, replace не есть команда, понимаемая BDE.
...
Рейтинг: 0 / 0
23.04.2004, 16:40
    #32494654
AlexPretov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование значений и присвоение результата
Код: plaintext
1.
select @a:=sum(fld1), @b:=sum(fld2) ... from tbl where citeria=true and sum=flase group by .... ;
update tbl set fd1=@a, fld2=@b ... where citeria=true and sum=true; 

оно? синтаксис не прверял, может где и неточность :(
________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование значений и присвоение результата / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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