MySQL Return событие для конкретного пользователя с общим рангом

0

Как я могу объединить два следующих запроса, чтобы дать мне конкретные события пользователей с общим рейтингом?

Запрос 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
Теги:
phpmyadmin
rank
sql-order-by

1 ответ

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
  • 0
    Да, я думаю, что это работает, я буду проверять дальше, хотя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню