誰かが私のサイトのブログ記事にアクセスするたびに、これをテーブル [blog_article_hits] に記録します。各訪問には 1 つの行があります。ここで、過去 14 日間のトレンド記事のリストを表示して、記事のタイトルとその記事のヒット数またはパーセンテージを表示したいと考えています。
例:
This is a blog article 1,0732
This is another article 930
私の試み:
SELECT
tre.article_id, COUNT(*) AS total_hits, art.title, art.description,
pho.photo_id
FROM blog_article_stats tre
LEFT JOIN blog_articles AS art ON tre.article_id = art.article_id
LEFT JOIN blog_photos AS pho ON art.article_id = pho.article_id
WHERE tre.d_time BETWEEN DATE_SUB(Now(), INTERVAL 14 DAY) AND Now()
AND pho.status = 'Published' AND art.status = 'Published'
GROUP BY tre.article_id
ORDER BY total_hits DESC LIMIT 5
それは非常に近いですが、完全には正しくありません。最も人気のある記事は正しい順序でリストされていますが、各タイトルの横にあるカウントは正しくありません。実際には、各記事に何枚の写真があるかを示しているのであって、その記事が何回アクセスされたかではありません。GROUP BY が役立つと思い、[pho.article_id] に 2 番目の GROUP 句を追加しようとしましたが、役に立ちませんでした。
[pho.photo_id] を選択して [pho.blog_photos] に参加しています。これは、リストされた各結果の横に 1 枚の写真を表示したいからです。
この問題を解決する方法を教えてもらえますか?
前もって感謝します。