0

このようなテーブルがあります。しかし、MySQL は現在、私の 2 回目の参加をカウントしていないようです。コメント リストのレポートのプロセス数で見逃していたものを知りたいです。

ここに画像の説明を入力

レートの平均もレポートの数にしたい

SELECT *, avg(rate.score), count(report.id) FROM `comment`
left join rate on (comment.id = rate.comment_id)
left join report on (comment.id = report.comment_id)
group by comment.id

id  text            id      comment_id  score   id      comment_id  type    avg(rate.score)     count(report.comment_id)
1   good article    1       1           2       1       1           1       4.0000              20
2   bad article     NULL    NULL        NULL    NULL    NULL        NULL    NULL                0

良い記事には2 つのレポートがあります。

count(report.id)間違った値を教えてください。私の間違いは何ですか?

4

2 に答える 2

1
SELECT 
    *,
    avg(rate.score),
    (SELECT 
            count(report.comment_id)
        FROM
            report
        WHERE
            comment.id = report.comment_id) AS num_reports
FROM
    comment
        left join
    rate ON (comment.id = rate.comment_id)
group by comment.id

次に例を示します。

http://sqlfiddle.com/#!2/cf313/15

于 2012-07-12T13:44:17.370 に答える
0

*は必要ありません。これを試して

SELECT comment.id, avg(rate.score), count(report.id) FROM `comment` 
left join rate on (comment.id = rate.comment_id) 
left join report on (comment.id = report.comment_id) 
group by comment.id 
于 2012-07-12T12:46:35.223 に答える