@spookyru

MODX запрос COUNT с связкой из таблиц через xpdo?

Здравствуйте. необходимо определить количество строк, через count, Когда я делаю напрямую запрос из phpmyadmin SELECT имяполя, COUNT(*) FROM таблица1, таблица2 WHERE таблица1.имяполя = таблица2.имяполя2 GROUP BY таблица1.имяполя ORDER BY COUNT(*) ASC - все прекрасно работает. выводит результат, где находит совпадение значений из таблицы 2 в таблице 1 и список составляет. все ок
Но, как это из modx? делаю так
$c = $modx->newQuery('КлассТаблицы1');
$c->select(array($modx->getSelectColumns('КлассТаблицы1', 'КлассТаблицы1','',array('имяполя')),$modx->getSelectColumns('КлассТаблицы2', 'КлассТаблицы2','',array('имяполя2')) ));
$c->select('имяполя, COUNT(*) ');
$c->leftJoin('КлассТаблицы2', 'КлассТаблицы2', array('КлассТаблицы1.имяполя= КлассТаблицы2.имяполя2'));
$c->groupby('КлассТаблицы1.имяполя');
$c->sortby('COUNT(*)','ASC');

- намертво виснет (в console). если не делать leftjoin, а делать по аналогии запроса в phpmyadmin - только через getSelectColumns и where, ругается, что нет column КлассТаблицы2.имяполя2
  • Вопрос задан
  • 468 просмотров
Пригласить эксперта
Ответы на вопрос 1
DarkRaven
@DarkRaven
разработка программного обеспечения
А кто вам мешает сделать так:
$query = $modx->prepare($sql);
	$modx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	
	try
	{
	    $query->execute($paramArray);
	    return $query->fetchAll(PDO::FETCH_ASSOC);
	}
	catch (PDOException $e) {
          //log exception
        }
, где $sql - Ваш SQL-запрос:
$sql = 'SELECT имяполя, COUNT(*) FROM ' . $modx->getTableName('КлассТаблицы1') . ' t1, ' . $modx->getTableName('КлассТаблицы2') . ' t2, WHERE t1.имяполя = t2.имяполя2 GROUP BY t1.имяполя ORDER BY COUNT(*) ASC ';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы