pdoFetch, добавить в select COUNT(*)

Василий, доброе утро!
Не подскажешь, есть ли возможность получить данные где в select будет кроме имен полей, псевдополе COUNT(*)?

Мне надо сгруппированный запрос вроде этого выполнить, но только через pdoFetch
"SELECT `$name` as val, COUNT(*) as cnt FROM `modx_ms2_products` WHERE price > 0 AND id IN ( $this->idsFiltered ) GROUP BY `$name`;"
Сейчас у меня берет все как надо, но без COUNT():

$conf = array(
                'class' => 'msProductData',
                //'select' => $name.', COUNT(*) as cnt ',
                'select' => $name,
                'where' => $nWere,
                'groupby' => $name,
                'fastMode' => true,
                'return' => 'sql',
                'limit' => 0
            );
            $this->pdo->setConfig($conf);
            $fRes = $this->pdo->run();
Peter Zenin
20 ноября 2013, 03:15
modx.pro
1 518
0

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

Василий Наумкин
20 ноября 2013, 07:25
0
Чтобы не было автоматической обработки полей select, нужно явно указать имя класса:
$conf = array(
    'class' => 'msProductData',
    'select' => 'msProductData.id, COUNT(*) as cnt ',
    'return' => 'sql',
    'limit' => 0
);
$pdo->setConfig($conf);

$res = $pdo->run();
echo $res;

SELECT SQL_CALC_FOUND_ROWS msProductData.id, COUNT(*) as cnt FROM `modx_ms2_products` AS `msProductData` ORDER BY msProductData.id ASC

Ну и pdoFetch автоматически выставляет плейсхолдер total с количеством результатов — не зря же в запросе SQL_CALC_FOUND_ROWS.
    Peter Zenin
    20 ноября 2013, 08:04
    0
    Спасибо!!!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2