PDO, перебор значений fetchAll, FETCH_GROUP

такой перебор в сниппете из своей таблицы достаем 10 случайных записей (для примера я упростил запрос, там достается одновременно 10 случайных+10 последних записей):
$sql = "
    select 
	t.Pole1_id, t.Pole1_vid, t.Pole1_name, ...
    from  Table1 t
    where ...
    order by RAND()
    LIMIT 0 , 10
    ";
$q = $modx->prepare($sql);
$q->execute();
$res = $q->fetchAll(PDO::FETCH_ASSOC);

foreach ($res as $v) 
{
    $modx->setPlaceholder('Pole1_id', $v['Pole1_id']);
    $modx->setPlaceholder('Pole1_vid',$v['Pole1_vid']);
    $modx->setPlaceholder('Pole1_name', $v['Pole1_name']);
    ...
    $output.=$modx->getChunk('tpltpltpl');
}
есть такой перебор, в него попадает случайно 10 записей
эта часть работает. Но возникла необходимость посмотреть какого вида и колчиесвто строк этого вида
(группировка по t.Pole1_vid+ count(*))

можно ли не создавать временные таблицы для хранения временного результата, ведь если я правильно понимаю, то запрос уже выполнен в момент $q->execute()?

как правильно оформить еще один перебор $res = $q->???(???) для тех же значений но с группировкой по полю Pole1_vid + количество вошедших записей
Legushka
14 марта 2014, 08:50
modx.pro
2 408
0

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

Legushka
14 марта 2014, 14:22
0
$sql = "
    select 
	t.Pole1_id, t.Pole1_vid, t.Pole1_name, ...
    from  Table1 t
    where ...
    order by RAND()
    LIMIT 0 , 10
    ";
$q = $modx->prepare($sql);
$q->execute();

$res1 = array();
$res = $q->fetchAll(PDO::FETCH_ASSOC);

foreach ($res as $v) 
{
    $modx->setPlaceholder('Pole1_id', $v['Pole1_id']);
    $modx->setPlaceholder('Pole1_vid',$v['Pole1_vid']);
    $modx->setPlaceholder('Pole1_name', $v['Pole1_name']);
    
    $res1[] = $v['Pole1_vid'];
    ...
    $output.=$modx->getChunk('tpltpltpl');
}

print_r(array_count_values ($res1));
сделал так — работает-)
вместо print_r свой перебор и вызов.
если есть вариант лучшего решения напишите плиз.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1