查询 CodeIgniter
Posted
技术标签:
【中文标题】查询 CodeIgniter【英文标题】:query CodeIgniter 【发布时间】:2012-07-25 23:27:36 【问题描述】:我编写了一个必须使用 CodeIgniter 执行的 SQL 查询。 我的查询是:-
SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1))
我在我的模型中这样做
function getCommentNumbers()
$sql = "SELECT COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN (SELECT id from tbl_users WHERE username IN (SELECT username FROM tbl_tickets WHERE site_referers_id =1))";
return $this->db->query($sql);
如何使用活动记录来做到这一点
它不工作:(
我有三个不同的表,它们是:-
tbl_users(id,username);
tbl_tickets(id,username,site_referers_id)
tbl_tickets_replies(id,user_id,comments)
我想要做的是选择属于具有 site_referers_id=1 的特定用户名的所有 cmets。 我想从具有 site_referes_id =1 的 tbl_tickets 中选择不同的用户名,然后从 tbl_users 获取所选用户名的 id 并使用该 id 来计算他有多少 cmets 并根据用户名显示它。 我的查询没有这样做,它显示所有用户的总 cmets,即 假设有两个用户 A 和 B,用户 id 1 和 2 有 10 和 15 个 cmets 那么它应该显示如下:
A 10
B 15
我的查询正在显示
A
B 25
【问题讨论】:
SELECT COUNT('user_id')
不会像您认为的那样做。您的意思是 SELECT COUNT(DISTINCT user_id)
或 SELECT COUNT(*)
,具体取决于您要执行的操作。
@MarkByers:先生,我已经编辑了我的问题
Codeigniter 的 AR 不支持子查询,因此您无法在没有任何技巧的情况下使用 AR。
【参考方案1】:
您缺少的是 GROUP BY 聚合函数。
试试这个:
SELECT DISTINCT user_id, COUNT('user_id') FROM tbl_tickets_replies WHERE user_id IN
(SELECT id from tbl_users WHERE username IN
(SELECT username FROM tbl_tickets WHERE site_referers_id =1)) GROUP BY user_id
【讨论】:
谢谢,你能帮我用codeigniter中的活动记录写吗 ***.com/questions/656622/… 请参阅此问题了解更多详细信息,但我认为您应该执行纯 mysql 查询。 Codeigniter 在解析复杂的 mysql 查询时有点懒惰。以上是关于查询 CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章
2016/3/13 七种查询 (普通查询 条件查询 排序查询 模糊查询 统计查询 分组查询 分页查询 )
Mysql查询详解(条件查询、子查询、模糊查询、连接查询。。。)
数据库查询: 列出表的所有字段,“*”符号,查询指定字段数据,DISTINCT查询,IN查询,BETWEEN AND查询,LIKE模糊查询,对查询结果排序,分组查询,统计分组查询