Как суммировать все значения из выборки?
Есть выборка pdoResources, значения которой обрабатываются в чанком
<td>[[#[[+parent]].tv.long]]</td>
А можно как-то их просуммировать или это отдельный сниппет нужно писать? Комментарии: 11
Полный код вызова сниппета выложите
вот код выборки
[[!pdoResources?
&parents=`137`
&depth=`5`
&tpl=`tpl.tpl`
&sortby=`menuindex`
&sortdir=`ASC`
&where=`{"pagetitle":"[[*pagetitle]]"}`
&showUnpublished=`1`
&limit=`100`
]]
чанк tpl.tpl содержит несколько строк аналогичных<td>[[#[[+parent]].tv.long]]</td>
то есть у меня есть некая таблица, нужно внизу вывести строку Итого для тех столбцов, которые можно суммировать.
Отдельным сниппетом на последней строке «Где результирующие данные»
Но тут такой момент. Этот пример для выборки TV — поля. Для других данных код может быть другим
tv_long_sum — название плейсхолдера в результате. название tvLong тоже на любой можно заменить
Но тут такой момент. Этот пример для выборки TV — поля. Для других данных код может быть другим
vLong.tmplvarid = 25"цифру 25 меняете на ID нужного TV поля.
tv_long_sum — название плейсхолдера в результате. название tvLong тоже на любой можно заменить
[[!pdoResources?
&parents=`137`
&depth=`5`
&tpl=``
&sortby=`menuindex`
&sortdir=`ASC`
&where=`{"pagetitle":"[[*pagetitle]]"}`
&showUnpublished=`1`
&limit=`100`
&leftJoin=`{
"tvLong":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 25"
}
}`
&select=`{
"tvLong": "SUM(tvLong.value) as tv_long_sum"
}`
]]
спасибо, работает.
а в другом случае у меня та же выборка и та же таблица, только строки выводятся по условию. то есть чанк выглядит вот так
а в другом случае у меня та же выборка и та же таблица, только строки выводятся по условию. то есть чанк выглядит вот так
{if $parent | resource: 'tv_parametr' == 'да'}
<tr>
<td>[[#[[+parent]].tv.long]]</td>
</tr>
{/if}
и соответственно в сумму попадают лишние данные. я так понимаю это условие нужно перенести в выборку, не подскажите как?
Пишу наугад без проверки. Но должно работать
[[!pdoResources?
&parents=`137`
&depth=`5`
&tpl=``
&sortby=`menuindex`
&sortdir=`ASC`
&where=`{
"pagetitle":"[[*pagetitle]]",
"tvParametr.value:=": "да"
}`
&showUnpublished=`1`
&limit=`100`
&leftJoin=`{
"tvLong":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 25"
},
"tvParametr":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvParametr.contentid AND tvParametr.tmplvarid = 888"
}
}`
&select=`{
"tvLong": "SUM(tvLong.value) as tv_long_sum"
}`
]]
почему-то появилась такая ошибка и сумма перестала работать
[pdoTools] Error 42S22: Unknown column 'tvLong.value' in 'field list'
весь вызов сниппета скиньте
[[!pdoResources?
&parents=`137`
&depth=`5`
&tpl=`tpl.long`
&sortby=`menuindex`
&sortdir=`ASC`
&where=`{
"pagetitle":"[[*pagetitle]]",
"tvStatus.value:=": "да"
}`
&showUnpublished=`1`
&limit=`100`
&leftJoin=`{
"tvLong":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 14",
"tvStatus":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvStatus.contentid AND tvStatus.tmplvarid = 31"
}
}`
&select=`{
"tvLong": "SUM(tvLong.value) as tv_long_sum"
}`
Как минимум нет закрывающей скобки и запятой после нее. Проверьте, вот нормальный код
[[!pdoResources?
&parents=`137`
&depth=`5`
&tpl=`tpl.long`
&sortby=`menuindex`
&sortdir=`ASC`
&where=`{
"pagetitle":"[[*pagetitle]]",
"tvStatus.value:=": "да"
}`
&showUnpublished=`1`
&limit=`100`
&leftJoin=`{
"tvLong":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvLong.contentid AND tvLong.tmplvarid = 14"
},
"tvStatus":{
"class":"modTemplateVarResource",
"on":"modResource.parent = tvStatus.contentid AND tvStatus.tmplvarid = 31"
}
}`
&select=`{
"tvLong": "SUM(tvLong.value) as tv_long_sum"
}`
]]
да, спасибо за корректировку — ошибка ушла, но теперь выборка пустая такое ощущение, по крайней мере в tv_long_sum пусто, а если убрать
"tvStatus.value:=": "да"
то есть сумма
разобрался, код верный просто в этом TV использовались значения по умолчанию. после пересохранения ресурсов все заработало.
еще раз спасибо за помощь!
еще раз спасибо за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.