1

このトピックに関する他の同様の投稿を知っているので、これを投稿することが合法であることを願っています. しかし、他のソリューションを機能させることができないので、自分のシナリオを投稿しようとしています。このような他の例では、テーブル名と行がどのように使用されているかわかりません。句読点からですか?

 SELECT bloggers.*, COUNT(post_id) AS post_count
    FROM bloggers LEFT JOIN blogger_posts 
    ON bloggers.blogger_id = blogger_posts.blogger_id
    GROUP BY bloggers.blogger_id
    ORDER BY post_count

記事を含むテーブルと、記事が読まれるたびに新しいレコードを取得する統計テーブルがあります。統計テーブルでその記事 ID のレコード数をカウントして記事テーブルをソートするクエリを作成しようとしています。「ビューで並べ替え」機能のように。

私の2つのテーブル:

論文

id

統計学

pid <- same as article id

他の例を見ると、左結合がありません。それをどのように機能させるかについて頭を悩ませることはできません。現時点での私のクエリは次のようになります: $query = "SELECT *, COUNT(pid) AS views FROM statistics GROUP BY pid ORDER BY views DESC";

どんな助けでも大歓迎です!

4

1 に答える 1

5
SELECT article.*, COUNT(statistics.pid) AS views
FROM article LEFT JOIN statistics ON article.id = statistics.pid
GROUP BY article.id
ORDER BY views DESC

アイデア:

  • 結合を使用して両方のテーブルを組み合わせる
  • 記事に統計がない場合は、 で埋めますNULL。つまり、左結合を使用します。
  • COUNT非値のみをカウントNULLするため、右のテーブルでカウントして正しいゼロの結果を得る
  • GROUP BY記事ごとに正確に 1 つの結果行を取得するため、つまり、各記事の統計を個別にカウントするため
于 2012-07-10T11:16:15.753 に答える