0

プロジェクトのmysqlクエリを作成する必要がありますが、これはスコープに対して少し複雑すぎます...

だから、私はメタデータ列と一緒に、idとtimestamp列を持つ画像のテーブル

「loves」のテーブルもあります。このテーブルには、id、imageid、userid、timestampの列があります。

(ここではユーザーIDはそれほど重要ではありません)

現在、LEFT JOINを使用して、いいねの総数で画像を並べ替えています

代わりに、私が今やりたいのは、画像を1日の平均のいいねで並べ替えることです。

したがって、5つのいいねが関連付けられている今日作成された画像は、20のいいねが関連付けられている5日前に作成された画像の前に来る必要があります。

これにどのようにアプローチし始めるかさえわかりませんが、SQLの達人の誰かが何かアイデアを持っていますか?乾杯。

編集:

このクエリを使用する

SELECT images.*, 
COUNT(loves.id) AS num_loves 
FROM images 
JOIN loves ON (images.id = loves.imageid) 
GROUP BY images.id 
ORDER BY num_loves/DATEDIFF(images.timestamp,CURDATE()) 
DESC LIMIT 0 , 24

このエラーが発生する

Reference 'num_loves' not supported (reference to group function)

まだMySQL構文のハンドルを取得しています...

4

1 に答える 1

3

ORDER BY句として任意の有効な式を使用できます。これは、代数のヒントを思い出す必要があることを意味します。

SELECT 
  images.url,
  images.date_added
FROM IMAGES
JOIN image_likes ON image_likes.image_id = images.id
GROUP BY images.id
ORDER BY count(image_likes.id)/DATEDIFF(CURDATE(), images.date_added)
于 2012-08-24T23:50:42.803 に答える