Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как сложить все значения дополнительного поля?

Как сложить все значения дополнительного поля?


     18.08.2015    Общие вопросы, Хаки    1183

вопрос
Здравствуйте.
Datalife 10.5
Подскажите, пожалуйста, как вывести на главной странице СУММУ всех значений дополнительного поля под названием price?

Вроде бы понятно задал вопрос :) Помогите, пожалуйста!

Ответа пока нет


6 комментариев

PunPun
Эксперт

PunPun - 19 августа 2015 00:09 -

$get = $db->super_query("SELECT SUM(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'price|', -1 ) ,  '||', 1 )) as price FROM " . PREFIX . "_post WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'price|', -1 ) ,  '||', 1 ) !=''");
$tpl->set("{price}", $get['price']);

well​

Extazy
Юзер

Extazy - 19 августа 2015 12:22 -

Вы эксперт уровня бога? :) Я запутался в этом запросе, но он реально работает. СПАСИБО огромное!

А можете подсказать, пожалуйста, как сработает данный запрос, если в дополнительном поле price:
1) цифра указана с десятичным значением через запятую
2) цифра указана с десятичным значением через точку
3) указано не число, а текст

PunPun
Эксперт

PunPun - 19 августа 2015 12:32 -

Extazy, тогда замените запрос на этот :
$get = $db->super_query("SELECT ROUND(SUM(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'price|', -1 ) ,  '||', 1 )), 2) as price FROM " . PREFIX . "_post WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  'price|', -1 ) ,  '||', 1 ) !=''");

well​

Extazy
Юзер

Extazy - 19 августа 2015 12:36 -

спасибо) но всё же, пожалуйста, прокомментируйте запрос.
1) Если в поле окажется не цифровое значение, то оно просто пропустится и ошибки не будет?
2) если десятичная доля выделяется запятой или точкой - в любом из вариантов произойдёт правильно округление?

PunPun
Эксперт

PunPun - 19 августа 2015 12:40 -

Extazy, не сталкивался с тем что бы в ячейке были с разными разделителями, по сути, оно должно округлить и ошибок быть не должно.

well​

Extazy
Юзер

Extazy - 19 августа 2015 13:01 -

ну.. я лентяй - проверил, вот результат:
1) если у одного из значений дополнительного поля прописать десятичное значение через запятую, то число округляется в меньшую сторону
2) если десятичное значение через точку, то число засчитывается, но не округляется

Ещё раз огромное спасибо!

Если Вы хорошо разбираетесь в дле, то может посмотрите мою проблему с авторизацией через facebook - готов заплатить за решение проблемы!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх