0

JOINSの使い方を学んでいます。何が間違っているのかわかりません。そのため、エントリをコメントの多い順に並べ替えたいと思います。これが私がやろうと思った方法です。

    SELECT a.*, COUNT(b.comment) AS comments_count
    FROM entries a
    LEFT JOIN comments b
    ON a.id = b.entry_id
    ORDER BY comments_count DESC
    LIMIT 6

これは明らかに間違った方法です。行名「entry_id」でコメントが移動するエントリを格納するコメント付きのテーブルがあります。エントリ テーブルには、comments.entry_id と対になっている id を持つエントリがあります。

編集:このクエリを実行しても、結果は1つしか得られません。理由がわからない。

4

1 に答える 1

4

各エントリのコメント数を取得するには a を使用する必要がありGROUP BY、その後で並べ替えることができます。

これを試して:

SELECT 
    a.*, 
    COUNT(b.comment) AS comments_count
FROM 
    entries a
LEFT JOIN comments b
    ON a.id = b.entry_id
GROUP BY
    a.id
ORDER BY 
    comments_count DESC

注:countなしのような集計関数を使用group byすると、常に 1 行が返されます。

于 2013-05-23T11:50:31.970 に答える