【发布时间】:2014-06-06 23:50:21
【问题描述】:
使用 CodeIgniter 和 Active Record 处理项目。
我遇到了一个查询问题: 我的数据库中有 3 个表,我不仅想加入,还想对其中的 2 个进行计数。这些表分别与 user_id、store_user_id、event_user_id 字段链接
表 1:用户 user_id
表 2:商店 store_user_id
表 3:事件 event_user_id
我想做的是:
1 - 从用户那里获取所有数据 2 - 计算 store_user_id = user_id 的商店数量(可能为 0) 3 - 用 event_user_id = user_id 计算事件的数量(可能是 0)
我已经在我的函数中这样做了:
$this->db->select('*');
$this->db->select('COUNT(s.store_user_id) as total_store', FALSE);
$this->db->select('COUNT(e.event_user_id) as total_event', FALSE);
$this->db->from('user u');
$this->db->join('store s', 's.store_user_id = u.user_id', 'left'); // this joins the user table to store table
$this->db->join('event e', 'e.event_user_id = u.user_id', 'left'); // this joins the user table to event table
$this->db->group_by('u.user_id');
$q = $this->db->get();
if ($q->num_rows()>0){
foreach ($q->result() as $rows) {
$data[] = $rows;
}
return $data;
}
问题是当我在视图中显示total_store和total_event时,结果是一样的,我认为它们之间的数字是相乘的..
例如: 对于我有 3 个事件和 4 个商店的用户,显示的结果将是 total_event = total_store = 12 ...
我不明白为什么,这让我疯狂了好几个小时!!而且,当我只数一个时,结果是正确的..
有什么想法吗??
提前非常感谢:)
【问题讨论】:
标签: php sql codeigniter activerecord join