【发布时间】:2015-01-23 15:38:40
【问题描述】:
我从编码中休息了一下,不幸的是在这里画了一个空白。我正在运行下面的查询,然后处理数据以过滤唯一用户 ID,但由于 join 命令,它提取了太多信息。 我的查询结果中不需要“用户”表中的数据,只需要关联帐户表中的数据,但其中 user.suspended_by(在用户表中)为 NULL。
$this->db
->select('*')
->from('linked_accounts')
->where('primary_user_id', $primary_user_id)
->join('user', 'user.id = linked_accounts.linked_account1_user_id')
->where('user.suspended_by', NULL);
$query = $this->db->get();
return $query->result();
如何重写这个查询?
回答:我解决了这个问题,通过添加去掉了不必要的信息
->group_by('linked_account1_user_id')
这使得数据的后处理速度更快,因为返回的数据量要小得多。
【问题讨论】:
-
使用 select ('linked_accounts.*')
-
我可能必须运行 2 个单独的查询,第一个检查 user.id 是否已暂停,然后仅在未暂停的情况下从linked_accounts 表中选择记录?
标签: php mysql sql codeigniter activerecord