Выбор активной записи Codeigniter, соединение слева, подсчет - PullRequest
1 голос
/ 08 апреля 2010

У меня есть форма, которая показывает результаты запроса базы данных, к этим результатам может быть присоединено много других ресурсов, и я хочу найти способ показать, сколько активов имеет каждый элемент.Например, моя таблица относится к районам Англии, где есть другие таблицы, где живут пользователи. У меня есть этот код:

$this->db->select('*');
$this->db->from('places');
$this->db->join('users, places.place_id = user.place_id, left');

$this->db->get();

Проблема, с которой я сталкиваюсь, заключается в получении запроса на возврат названия места и номерапользователи, живущие в этом месте, возможно?

Ответы [ 2 ]

5 голосов
/ 25 января 2012

Не зная ваших точных настроек БД, но примерно так вы могли бы выполнить этот запрос с помощью активной записи CodeIgniter

 $this->db->select('places.place_id');
 $this->db->select_sum('places.place_id', 'total');
 $this->db->from('places');
 $this->db->join('users', 'places.place_id = user.place_id', 'left');
 $this->db->group_by('user.place_id');
 $this->db->get();
2 голосов
/ 08 апреля 2010
select places.place_id,
       count(*) as UsersAtThisPlace
   from
       places,
       users
   where 
       places.place_id = users.place_id
   group by
       places.place_id

Не знаю точно, как реализовать через ваш PHP, но он должен быть таким же простым, как и приведенный выше запрос, внутри вашего

$ this-> db-> select («пример всей строки выше»);

Кроме того, если у вас есть другие описательные элементы из таблицы мест, вы можете добавить их также до подсчета (просто для ясности), но также должны были бы включить их в группу с помощью ... таких как

select places.place_id,
       places.description,
       places.otherfield,
       count(*) as UsersAtThisPlace
   from
       places,
       users
   where 
       places.place_id = users.place_id
   group by
       places.place_id,
       places.description,
       places.otherfield
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...