Mysql クエリを実行するために他の投稿を調べようとしましたが、ほとんどそこにいると思いますが、何らかの理由でバグがあります。
私はそれらのテーブルを持っています:
POSTS [id_post (int) / activity (int) ]
VOTES [id_vote (int) / id_post (int) / user_id (int)]
ACTIVITIES [id_activity (int) / activity_name (varchar)]
実際にはそれよりも多くのテーブルとフィールドがありますが、これらは私の問題に関連するものです。投票中の投稿と投票者のユーザーアカウントを参照して、VOTES テーブルにユーザー投票を追加する投票システムを作成しました。
したがって、投票テーブルは次のようになります。
id_vote | id_post | user_id
1 5 8
2 6 8
すべての投稿はアクティビティに属しています。各アクティビティの投票数が最も多い投稿をリストしたいと思います。
それが私がこれまでのところです:
SELECT activities.id_activity, activities.activity_name, votes.id_post, votes.totalvotes AS allvotes
FROM ( SELECT votes.id_post, COUNT(*) as totalvotes
FROM `votes`
GROUP BY votes.id_post
) AS votes
JOIN posts ON posts.id_post = votes.id_post
JOIN activities ON posts.activity = activities.id_activity
GROUP BY activities.id_activity
HAVING allvotes = MAX(totalvotes)
これはうまく機能します。同じアクティビティの 2 つの投稿の投票数が同じである場合を除いて、必要なものを取得します。これらの投稿をグループ化した後にのみ表示されるのはどれか、なぜ他の投稿ではないのかわかりません。
id_activity | activity_name | id_post | allvotes
5 eating 5 2
3 sleeping 6 1
さらに重要なことに、私を本当に悩ませているのは、何らかの理由で一部のアクティビティが表示されないことです。上記の例で、食べるカテゴリに属する投稿 5 が実際に最も多くの票を獲得した投稿である場合、そのカテゴリが表示されることに気付きました。しかし、最も多くの票を獲得した食事カテゴリの投稿が 5 番目の投稿 (MYSQL がデフォルトで表示するように決定したもの) ではない場合、食事カテゴリに関する行全体がまったく表示されません。 .
私はこれに取り組んで2日が経ちました...何かアイデアはありますか?
本当にありがとう。