Вставка данных в правильное место в отсортированной таблице MySQL через php / android - PullRequest
1 голос
/ 12 июня 2011

Я нашел тонну информации на эту тему, но ее перегрузка.Кажется, я не могу найти именно то решение, которое ищу, все, что я нахожу, это общие вещи.

У меня настроена таблица таблиц mySQL, как эта: rank |имя |оценка

Приложение для Android знает только имя и оценку при вставке.Я использую php и httppost для вставки данных.Я знаю, как это сделать.Что я хочу сделать, это вставить данные, основанные на счете, и присвоить ранг автоматически также на основе результата.

Скажем, у меня уже есть эти значения в базе данных:

  1. Tiff 1000
  2. Аллен 800

и я хочу вставить значения "Jake 900"

Как мне получить результирующую таблицу:

  1. Tiff 1000
  2. Джейк 900
  3. Аллен 800

Желательно, чтобы телефон или планшет не сортировали данные,потому что я знаю, как загрузить таблицу, вставить информацию, обработать ее и снова загрузить, но я не хочу, чтобы служба зависала некоторое время, даже если она находится в фоновом режиме.

Решения?

Ответы [ 2 ]

4 голосов
/ 12 июня 2011

не сортировать таблицу, сортировать результаты запроса:

SELECT username, score FROM yourTable ORDER BY score DESC

просто примечание: если вы хотите, чтобы mySql добавил столбец ранга:

SET @rank = 0, @prev_val = NULL; 
SELECT rank, username, score 
      FROM (SELECT @rank := IF(@prev_val=score,@rank,@rank+1) AS rank,
                   username AS username,
                   @prev_val := score AS score FROM yourTable  ORDER BY score DESC)  
        AS result 

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

2 голосов
/ 12 июня 2011

Почему вы не используете "ORDER BY DESC score" в запросе SQL для получения результатов?

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