Доброго всем дня!
Необходимо сформировать запрос на получение 5 групп с максимальным числом участников. Имеются ввиду группы из модуля og (Organic Group), но суть именно в запросе.
Если строить запрос в сыром виде, то получается как то так:
SELECT g.group_audience_gid, COUNT(g.group_audience_gid) AS total FROM {field_revision_group_audience} g WHERE g.bundle='user' GROUP_BY g.group_audience_gid.
У меня два вопроса:
1) Как отсортировать выборку по полю COUNT(g.group_audience_gid), возможно ли такое?
2) Как переписать запрос в рамках db_select() ?
У меня пока вышло вроде этого:
<?php
$query = db_select('field_revision_group_audience ', 'g');
$query->condition('g.bundle', 'user');
$query->groupBy('g.group_audience_gid');
$query->fields('g', array('group_audience_gid'));
$query->range(0, 5);
$result = $query->execute();
?>
Не знаю как добавить поле COUNT(g.group_audience_gid) и как затать сортировку?
Нужна помощь!
Комментарии
Решено:
<?php
$query = db_select('field_revision_group_audience ', 'g');
$query->condition('g.bundle', 'user');
$query->groupBy('g.group_audience_gid');
$query->fields('g', array('group_audience_gid'));
$query->addExpression('COUNT(g.group_audience_gid)', 'total');
$query->orderBy('total', 'DESC');
$query->range(0, 5);
$result = $query->execute();
?>