Как я могу объединить два следующих запроса, чтобы дать мне конкретные события пользователей с общим рейтингом?
Запрос 1. Возвращает ранг события на основе количества голосов.
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC;
Запрос 2. Возвращает события для определенного пользователя.
SELECT e.guid, e.name, e.votes
FROM user_event ue
JOIN event e
ON e.guid = ue.event_uid
WHERE ue.user_uid = '123';
Таблица событий
guid | name | votes
-------------------
abc event1 10
def event2 5
ghi event3 15
Таблица событий пользователя
user_event_id | event_guid | user_uid
--------------------------------------
1 abc 123
2 def 123
3 ghi 456
Комбинированный запрос должен возвращаться для пользователя123
guid name votes rank
abc | event1 | 10 | 2
def | event2 | 5 | 3
Или для пользователя 456:
guid name votes rank
ghi | event3 | 15 | 1
Это должно работать с вашей версией:
SELECT r.* FROM user_event ue
JOIN(
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
) AS r ON r.guid = ue.event_guid
WHERE ue.user_uid = 123