1

私のウェブサイトには投票システムがあり、各ユーザーの投票をskmp_votingというテーブルに保存します。このデータベースの各レコードには、iditem_id (これはユーザーが投票した記事の ID)、およびvote_valueがあります。vote_value は、ユーザーが何をしたかによって異なります。ユーザーが賛成票を投じた場合の値は「1」、反対票を投じた場合の値は「-1」です。

私はトップの記事を表示したくないので、より多くの賛成票を持っている記事に、toparticles.php ページを持っています。これが、現在持っているトップの記事を取得するための私の mysql クエリです。

SELECT stories.*, skmp_votes.vote_value FROM stories 
JOIN skmp_votes ON stories.id = skmp_votes.item_id 
ORDER BY skmp_votes.vote_value DESC

storiesという別のテーブルから記事情報を選択し、skmp_votesテーブルの vote_value と照合します。

これは正しくないと確信しています.1または何かに等しいvote_valueを選択するため、どうにかしてすべてのvote_valueをまとめてカウントし、mysqlクエリを使用して上位の記事を取得する必要があります.

4

1 に答える 1

1

それはあなたの投票テーブルに依存します。私が想像したように、それは各投票のための列を持っています。この場合、記事に一致する投票の合計を行う必要があります。すなわち

SELECT SUM(vote_value) as 'total_votes' FROM skmp_voting WHERE item_id='$article_id';

反対票から値を差し引きたいので、SUM代わりに使用します。COUNT

編集:答えを補完する

この次のクエリでは、すべての記事とその合計投票数が、合計投票数(一番上で最も投票された記事)の順に表示されます。

SELECT stories.*, SUM(skmp_votes.vote_value) as 'total_votes' FROM stories 
  JOIN skmp_votes ON stories.id = skmp_votes.item_id 
  ORDER BY skmp_votes.total_votes DESC

取得するには、最も投票された5つの記事を言うと、最後に追加するだけですLIMIT 5

于 2011-09-17T16:03:37.873 に答える