次の列を持つ3つのテーブルがあります。
* users : user_id
* votes : user_id, creation_id
* creations : creation_id, creation_points
それぞれがそれぞれuser
に1回投票できますcreation
。ユーザーが投票すると、これが発生します:
- 表: andを使用
votes
して新しい行を挿入します(ユーザーがこの作成にすでに投票しているかどうかを確認できます)user_id
creation_id
- 表:関連する作成の
creations
行に+1を追加しますcreation_points
しかし今、ユーザーが作品に投票することに成功すると、まだ投票していない次の作品が表示されるようにしたいと思います。どうすればそれを達成できますか?
私はこのように試しました:
creation_id
テーブルから次を選択しcreations
ます(creation_id
現在よりも大きい場合creation_id
)- カップル
creation_id
&user_id
がすでにvotes
テーブルに存在するかどうかを確認します。存在する場合は、1)から再試行してください。
この方法の問題は、ユーザーが次の作成にすでに投票している場合、多くのクエリが必要になることです。また、彼がすでにすべての作品に投票している場合は、無限ループを作成します。他に選択肢はありますか?