1

画像ID、タイトル、アップロードしたユーザー、タイムスタンプ、ファイル拡張子を格納する画像テーブルがあります。

また、画像がいつ表示されたかを記録するビュー テーブルもあります。列は、id、画像 ID、タイムスタンプ、および画像を閲覧したユーザーです。

私が必要としている方法と方法がわからないのは、最も閲覧された順に一連の画像を返す SQL クエリを実行することです。

私はこことGoogleを見回してきましたが、実際に何を検索すればよいかわかりません.

4

2 に答える 2

4
SELECT images.*, count(views.view_id) view_count
FROM images
LEFT JOIN views on views.image_id = images.image_id
GROUP BY images.image_id
ORDER BY view_count DESC

http://sqlfiddle.com/#!2/a669b/5

GROUP BY 句は、「集計関数」 (count、sum、min、max など) にどのように動作するかを指示します。この場合、画像ごとにグループ化し、画像ごとのビュー数を取得しています。COUNTnull 以外の値のみをカウントし、存在しないビューをカウントしたくないので、キーをオフにしviews.view_idます。

LEFT JOIN ではなく INNER JOIN を実行すると、ビューを持つ画像のみが返されます。LEFT JOIN を使用すると、ゼロのカウントを取得できます。

于 2013-03-30T21:16:24.643 に答える
0

結合を確認し、画像テーブルを画像表示テーブルに結合する必要があります。その後、両方のテーブルで 1 つのクエリを実行できます。

于 2013-03-30T21:16:59.630 に答える