У меня есть 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).
Проблема этого метода заключается в том, что ему нужно много запросов, если пользователь уже проголосовал за следующее создание.Это также создает бесконечный цикл, если он уже проголосовал за все творения.Есть ли другие альтернативы?