SQL beginner here。他のテーブルの投票数が基準を満たしているカウントレコード
私は2つのテーブル、コメント、投票を持っています。私はcomments.idとvotes.commentidを持っているので、コメントに投票を付けることができます。
のテーブルが含まれています comments.id comments.text
votes.commentid(REF comments.id) votes.vote(1または-1)
だから人々は、コメントを作成し、他の人々はそれらに投票する。人々は彼らの投票を変更する場合は、その一人一人が一度だけ投票することができ票テーブルに反映するので、何の質量upvoting/downvotingはありませんだ、など
私は何をしようとしていると、そのすべてのコメントをフェッチ負の票の25%未満を持っています。私はこのクエリを書く方法がわかりません。私が試してみるものは、単にSQLエラーです。
だから基本的に私は
select text from comments
where
count(where votes.commentid=comments.id AND votes.vote<0) <
(count(where votes.commentid=comments.id AND votes.vote>0)*.25)
(ここでは私の恐ろしいSQL恩赦)のような何かをしたいので、私は私のSQLの理解の私の限界まですべてを試してみましたが、私は作品の構文を見つけることができません。手伝ってくれますか?
を!しかし、どのくらいのクエリの獣!コメントテーブルが最大10〜20,000になると、どのように速度が向上しますか? – Raptisoft
簡単な答え:インデックス。複雑な答え:おそらく一時的なテーブル、おそらくビュー。 –
さて、私ができることの1つは、誰でも投票するといつでもコメントテーブルのブール値を更新することです。投票が行われるたびに、そのブール値が設定されるか、または設定されなくなり、負荷を分散するのに役立ちます。クエリはちょうど "このブール値セットです。" – Raptisoft