1

我正在尝试运行查询以选择与文章 ID 相关的评论最多的文章。

我有一个文章表和一个评论表,评论表有一个链接它们的 article_id 字段,我想在这里做一个左连接是希望我到目前为止。

SELECT *, SUM(`comments`.`article_id`) AS total FROM (`articles`) JOIN `comments` ON `comments`.`article_id` = `articles`.`id` GROUP BY `comments`.`article_id` ORDER BY `total` asc

我正在使用 CodeIgniter,上面是下面我的活动记录的输出。

$this->db->select('*');
        $this->db->from('articles');
        $this->db->join('comments', 'comments.article_id = articles.id');
        $this->db->group_by('comments.article_id');
        $this->db->select_sum('comments.article_id', 'total');
        $this->db->order_by('total', 'asc'); 
        $query = $this->db->get();
        return $query->result();

好的,这工作我似乎得到了正确的输出,但我没有得到评论的数量作为我需要工作的值。

所以我想得到

id 为 1 的文章有 23 条评论

id 为 2 的文章有 3 条评论

等等等等

目前我正在获得文章 ID 的总和,我认为我的总字段值非常高,但不正确可以对此有所帮助吗???

谢谢

抱歉,我使用 SUM 而不是计数 AARRRRRGGGGHHHH 回答了我自己的问题,这很有效

SELECT *, COUNT(`comments`.`article_id`) AS total FROM (`articles`) JOIN `comments` ON `comments`.`article_id` = `articles`.`id` GROUP BY `comments`.`article_id` ORDER BY `total` asc
4

2 回答 2

1

这是答案..

SELECT article.*, count( comments. article_id) AS total1 FROM articlesJOIN commentsON commentsarticle_id= articlesarticle_id 分组依据articlesarticle_id按升序total1排序

于 2012-11-20T10:51:13.570 回答
0

这是因为您在查询中对文章 ID 进行了总和。您需要计算评论的总和。删除 sum 函数中的文章 ID,如下所示 SUM(comments.comments_column_name)。我的意思是您在哪一列中针对评论表中的每个 id 保存评论。

于 2012-11-20T10:43:02.513 回答