PDO, перебор значений fetchAll, FETCH_GROUP
такой перебор в сниппете из своей таблицы достаем 10 случайных записей (для примера я упростил запрос, там достается одновременно 10 случайных+10 последних записей):
эта часть работает. Но возникла необходимость посмотреть какого вида и колчиесвто строк этого вида
(группировка по t.Pole1_vid+ count(*))
можно ли не создавать временные таблицы для хранения временного результата, ведь если я правильно понимаю, то запрос уже выполнен в момент $q->execute()?
как правильно оформить еще один перебор $res = $q->???(???) для тех же значений но с группировкой по полю Pole1_vid + количество вошедших записей
$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 + количество вошедших записей
Комментарии: 1
$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 свой перебор и вызов.
если есть вариант лучшего решения напишите плиз.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.