Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: нахождение суммы чисел в поле со строкой
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
усем приветы.
есть поле varchar в таблице, и в нем записаны числа через запятую, например
2,2,1
1
1,3
5,2
задача стоит в нахождении суммы всех этих чисел
например чтобы результат хранился в отдельном поле
5
1
4
7
возможно ли такое проделать в mysql? из всех вариантов находил только с помощью хранимых процедур, с коими дела не имел, но если они могут принести результат, то можно воспользоваться и этим.
буду благодарен за релизацию решения
----- Just do it
OrmaJever
Отправлено: 27 Декабря, 2011 - 19:13:02
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
SET @saTail = SUBSTRING( @saTail, LENGTH(@sHead)+ 2 );
## Тут любой Ваш код
## Для примера добавление новых ID пользователей в таблицу users
INSERTINTO users (id)VALUES(@sHead);
END WHILE;
END//
DELIMITER ;
я понимаю 50% этого кода, но вот операция инсерт мне ни к чему. как бы ее заменить чтобы просто я вызвал эту процедуру и получил поле в таблице с суммой, например
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Помог: 131 раз(а)
tuareg большое спасибо вам за исчерпывающий ответ. плюсую (Добавление)
кстати вот эти DELIMETR это обязательные вещи? и нужно ли каждый раз выполнять функцию, или один раз выполнить, а после она будет храниться?
----- Just do it
tuareg
Отправлено: 27 Декабря, 2011 - 20:09:00
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Panoptik пишет:
DELIMETR это обязательные вещи?
Да это разделители. Т.е они необходимы, для того чтобы можно было использовать ;
в функции или в процедуре.
Panoptik пишет:
и нужно ли каждый раз выполнять функцию, или один раз выполнить, а после она будет храниться?
Нет, ее достаточно создать один раз и все. Потом она уже будет выполняться сама.
хранятся они в таблице 'information_schema'.(по моему ).
Плюсом использования в данном случае функции, является то, что она после первого запроса в соединении попадет в КЭШ mySQL.(план выполнения ф-и) И далее затраты на ее выполнение будут мизерны.
P.S Единственное, что я бы сделал, это не сортировал на стороне MySQl, а сортировку производил уже на PHP. Потому что в данном запросе, будет осуществляться полное сканирование таблицы, потом создание временной таблицы, ее сортировка и только потом вывод рез-та.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.