Ранжирование таблицы лидеров с использованием MYSQL Query - PullRequest
0 голосов
/ 11 февраля 2020

У меня проблема, я не так хорош в логике c, поэтому я пытаюсь сделать это, просто используя только запросы,

У меня есть список данных, где мне нужно получить их рейтинг, но проблема в том, что мне нужно получить первые два верхних для меня и последние два, которые ниже для меня.

например

id| name |   score
1   bob       20
2   anna      10
3   jose      30
4   boni      30
5   lea       100
6   leo       10
7   qwertina  90
8   josh      50
9   king      40
10  queen     10

представьте, что мой идентификатор пользовательское значение равно 7

, поэтому, если я вхожу в систему, и мой идентификатор 7

, мне нужно получить вывод

id| name |   score
5   lea       100
6   leo       10
7   qwertina  90
8   josh      50
9   king      40

: возможно в mysql запросе? любая помощь будет очень признательна, я действительно застрял с этой проблемой.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Вы, кажется, основываете свои логи c на идентификаторах, что довольно странно, но вот мы:

SELECT id, name, score
FROM yourTable
WHERE id BETWEEN yourId-2 AND yourId+2
0 голосов
/ 11 февраля 2020

Не уверен в MySQL единственном решении, но в псевдо php коде

Grab records ordered by score
set a counter at 0
for loop starting 0, <= count of results
  if the id your id? 
    if the loop index < 3 ? // there aren't two people ahead of you
      return rows 0 to 4
    elseif the loop index > count -3 ? // you are one of the last
      return rows count -4 to count
    else
      return rows index -2 to index + 2  // you have 2 above and below you

Попробуйте, и если вы застряли, отправьте свой PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...