Php 查询代码点火器

Php 查询代码点火器,php,mysql,codeigniter,Php,Mysql,Codeigniter,我已经编写了一个SQL查询,我必须使用CodeIgniter进行查询。 我的问题是:- 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 getCommentNum

我已经编写了一个SQL查询,我必须使用CodeIgniter进行查询。 我的问题是:-

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)
我想做的是选择属于特定用户名的所有评论,该用户名的站点\u referers\u id=1。 我想从具有站点引用id=1的tbl_票证中选择不同的用户名,然后从tbl_用户中获取所选用户名的id,并使用该id计算他有多少评论,并根据用户名显示。 我的查询没有这样做,它显示所有用户的总评论,即。, 假设有两个用户A和B,用户id为1和2,分别有10和15条评论 然后它应该显示为:

A   10
B   15
相反,我的疑问正在显现

A
B  25

您缺少的是groupby聚合函数

试试这个:

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

SELECT COUNT('user\u id')
不符合您的想法。您的意思是
SELECT COUNT(DISTINCT user\u id)
SELECT COUNT(*)
这取决于您要做什么。@MarkByers:我已经编辑了我的问题sirCodeigniter的AR不支持子查询,因此您不能不使用任何技巧就使用AR。谢谢,您可以帮助我使用codeigniter中的活动记录编写它吗查看此问题了解更多详细信息,但我认为您应该执行纯mysql查询。Codeigniter在解析复杂的mysql查询时有点懒惰。