私は、次の列を持つ3つのテーブルを持っているユーザーが投票しなかったため、次の項目を選択する方法:評価システム:まだ
* users : user_id
* votes : user_id, creation_id
* creations : creation_id, creation_points
各user
は、各creation
に対して1回投票することができます。ユーザーの投票は、これが発生した場合:
- 表
votes
は:user_id
とcreation_id
に新しい行を挿入し - 表
creations
(ので、我々は、ユーザーがすでにこの創造のために投票したかどうかを確認することができます):に1を追加します。今、私は、ユーザーが正常に作成するために投票したとき、それは彼に彼がまだ投票しなかったため次作成が表示されることを懸念作成
の行creation_points
しかしたい。それをどうすれば実現できますか?
- カップル
creation_id
&user_id
はすでにvotes
テーブルに存在する場合 - チェック(
creation_id
が現在creation_id
よりも大きい)creations
テーブルから次のcreation_id
を選択: 私はこの方法を試してみました。存在する場合は、1)から再試行してください。
この方法の問題は、ユーザーがすでに次回の作成に投票した場合に多くのクエリが必要になることです。また、すでにすべての作品に投票していれば、無限ループを作成します。他の選択肢はありますか?