クエリを実行して、記事 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