と の 2 つのテーブルがphoto
ありlike
ます。1日のいいね数に基づいて人気のある写真を取得しようとしています. つまり、基本的に「今日の人気」のようなものです。
SELECT
p.id AS id, COUNT(li.id) AS total_likes \
FROM `photo` p \
LEFT JOIN `like` li \
ON p.id = li.photo_id \
WHERE
li.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) \
GROUP BY \
p.id
これは、今日の「いいね!」の数が十分にある場合にうまく機能します。ただし、過去 1 日にいいねがなかった場合、レコードは返されません。
これも少し変えたいと思います。レベルを作ることは可能ですか?例:
複数の日に基づいて写真をランク付けします。
1. Get photos based on how many likes today
2. Get photos based on how many likes for last week
and so on...
つまり、基本的にこれが行うことは、30 個のアイテムを取得する必要があるとしましょう。最初に、今日の「いいね!」の数に基づいて行を取得しようとします。20、15 などの任意の数を指定できます。次に、合計 30 になるのに必要な残りの行を取得しますが、1 週間のいいね数に基づいて並べ替えます。
So something like:
SELECT FROM photo SORT BY likes today, likes in a week ...
ご協力いただきありがとうございます!