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 の合計を取得しています。合計フィールドに非常に高い値が含まれていると思いますが、これは正しくありません。

ありがとう

申し訳ありませんが、私自身の質問に答えました IM USING SUM AND NOT COUNT AARRRRRGGGGHHH これは機能します

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 comments. article_id= articles. article_id グループ化articlesarticle_id昇順total1で並べ替え

于 2012-11-20T10:51:13.570 に答える
0

これは、クエリで記事 ID の合計を実行しているためです。コメントの合計を計算する必要があります。この SUM(comments.comments_column_name) のように、sum 関数の記事 ID を削除します。コメント テーブルの各 ID に対してコメントを保存している列を意味します。

于 2012-11-20T10:43:02.513 に答える