Запрос на получения списка групп с максимальным числом участников [Решено]

Главные вкладки

Аватар пользователя vic vic 29 июня 2011 в 8:03

Доброго всем дня!

Необходимо сформировать запрос на получение 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(05);
  
$result $query->execute();
?>

Не знаю как добавить поле COUNT(g.group_audience_gid) и как затать сортировку?
Нужна помощь!

Комментарии

Аватар пользователя vic vic 30 июня 2011 в 7:00

Решено:

<?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(05);
      
$result $query->execute();
?>