0

我编写了一个必须使用 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 的特定用户名的所有评论。我想从具有 site_referes_id =1 的 tbl_tickets 中选择不同的用户名,然后从 tbl_users 获取所选用户名的 id 并使用该 id 来计算他有多少评论并根据用户名显示它。我的查询没有这样做,它显示所有用户的总评论,即假设有两个用户 A 和 B,用户 id 1 和 2 有 10 和 15 条评论,那么它应该显示如下:

A   10
B   15

而是我的查询显示

A
B  25
4

1 回答 1

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
于 2012-07-27T10:21:53.460 回答