Итак, у меня есть этот запрос, который извлекается из моей таблицы ссылок и голосов, и мне нужен последний столбец данных. Моя таблица голосов состоит из голосов каждого пользователя, пользователь может голосовать только один раз за ссылку, и его значение голосования равно -1, 0 или 1. В таблице голосов есть внешний ключ user_id, и я хочу каким-то образом собрать голос текущего пользователя , Я чувствую, что сложность текущего запроса может потребовать второго запроса, но я действительно хочу избежать этого, если это возможно. Мне просто нужно знать, каким был текущий голос пользователя. Ссылка никогда не будет иметь более одного значения голоса, потому что пользователь может голосовать по ссылке только один раз.
Несколько заметок
- Все ссылки начинаются автоматически при наличии хотя бы одной записи о голосовании текущего пользователя
- Пользователь, который голосует по ссылке, затем отменяет выбор этого голосования, сохраняет эту запись голосования с 0 дельта
SQL:
SELECT links.*, (SUM(votes.karma_delta)) AS karma
FROM links, votes
WHERE links.id = votes.link_id
GROUP BY votes.link_id
ORDER BY (SUM(votes.karma_delta) - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 0, 100
Хотя оптимизация великолепна, сейчас я просто хочу получить выбранные ссылки karma_delta указанным пользователем.