У меня есть 3 таблицы со следующими столбцами:
* users : user_id
* votes : user_id, creation_id
* creations : creation_id, creation_points
Каждый user
может проголосовать один раз за каждого creation
. Когда пользователь голосует, происходит следующее:
- Таблица
votes
: вставьте новую строку сuser_id
иcreation_id
(чтобы мы могли проверить, проголосовал ли пользователь за это создание) - Таблица
creations
: добавьте +1 к строкеcreation_points
для соответствующего творения
Но теперь я хочу, чтобы, когда пользователь успешно проголосовал за создание, ему отображалось следующее создание, за которое он еще не голосовал. Как я могу этого добиться?
Я пробовал так:
- Выбрать следующий
creation_id
изcreations
таблицы (гдеcreation_id
больше текущегоcreation_id
) - Убедитесь, что пара
creation_id
&user_id
уже существует вvotes
таблице. Если он существует, повторите попытку с 1).
Проблема с этим методом в том, что ему нужно много запросов, если пользователь уже проголосовал за следующее создание. Это также создает бесконечный цикл, если он уже проголосовал за все творения. Есть ли другие альтернативы?