Два COUNT в запросе

Понадобилось получить два COUNT с разными условиями в одном запросе если кому то понадобиться то это достаточно просто сделать

COUNT(case when modResource.parent = 2 then 1 else null end)   as getCountArticle,
COUNT(case when modResource.parent = 38 then 1 else null end)   as getCountProgect',


Более подробный пример с pdoPage

<div id="pdopage">
   <div class="rows">
      {$_modx->runSnippet('!pdoPage', [
      'element' => 'pdoUsers',
      'tpl' => 'tpl.UsersNoIf',
      'limit' => '24',
      'ajaxMode' => 'button',
      'ajaxTplMore' => '@INLINE <button class="btn   btn-more">Загрузить еще</button>',
      'sortdir'=>'desc',
      'select' => [
      'modUser' => '*',
      'modResource' => 'modResource.createdby, modResource.parent, modResource.id, 
      COUNT(case when modResource.parent = 2 then 1 else null end)   as getCountArticle,
      COUNT(case when modResource.parent = 38 then 1 else null end)   as getCountProgect',
      ],
      'leftJoin' => [
      'modResource' => [
      'class' => 'modResource',
      'on' => 'modResource.createdby = modUser.id'
      ]
      ]
      'where' => ['modResource.hidemenu' => 0] 
      ])}
   </div>
   {$_modx->getPlaceholder('page.nav')}
</div>
Может кончено вы об этом все знаете, но мало ли кому то поможет
Если есть способ проще и правильнее буду рад увидеть его в комментариях
Вася
02 марта 2018, 13:28
modx.pro
2
1 450
+2
Поблагодарить автора Отправить деньги

Комментарии: 1

crazybeard
16 марта 2018, 15:41
0
В MySQL нативно делал единой выборкой данные в различных разрезах, суть примерно та же, но запись короче

SELECT SUM(IF(`status` = 'new', 1, 0)) as CountNew, SUM(IF(`status` = 'close', 1, 0)) as CountClose ...

Понятно, что пример можно одной группировкой переделать, но это только пример ))
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1