【问题标题】:Codeigniter active record select, left join, countCodeigniter 活动记录选择、左连接、计数
【发布时间】:2010-04-08 11:42:09
【问题描述】:
我有一个显示数据库查询结果的表单,这些结果可以包含许多其他资产,我想找到一种方法来显示每个元素有多少资产。例如,我的表位于英格兰地区,另一张表位于用户居住的地方,我目前有此代码,
$this->db->select('*');
$this->db->from('places');
$this->db->join('users, places.place_id = user.place_id, left');
$this->db->get();
我遇到的问题是让查询返回地名和居住在该地的用户数量,这可能吗?
【问题讨论】:
标签:
php
mysql
activerecord
codeigniter
【解决方案1】:
不知道您的确切数据库设置,但您可以使用 CodeIgniter 的 Active Record 执行此查询
$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】:
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