2009-04-29 2 views
1

У меня есть база данных с высокими баллами для игры, которая отслеживает каждую игру в разных мирах. То, что я хочу сделать, это узнать некоторые статистические данные о пьесах, а затем найти, где каждый мир «покоится» в соответствии друг с другом (отсортировано по количеству раз).MySQL - Оптимизация запроса и поиск ранга на основе столбца Сумма

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

Я также уверен, что делать это в трех отдельных запросах - это, вероятно, очень медленный способ сделать это и, вероятно, можно улучшить.

У меня есть метка времени (не используется здесь) и столбец «world», индексированный в схеме DB. Вот выбор моего источника:

function getStast($worldName) { 
    // ## First find the number of wins and some other data: 
    $query = "SELECT COUNT(*) AS total, 
      AVG(score) AS avgScore, 
      SUM(score) AS totalScore 
      FROM highscores 
      WHERE world = '$worldName' 
      AND victory = 1"; 
    $win = $row['total']; 

    // ## Then find the number of losses: 
    $query = "SELECT COUNT(*) AS total 
      FROM highscores 
      WHERE world = '$worldName' 
      AND victory = 0"; 
    $loss = $row['total']; 

    $total = $win + $loss; 

    // ## Then find the rank (this is the broken bit): 
    $query="SELECT world, count(*) AS total 
      FROM highscores 
      WHERE total > $total 
      GROUP BY world 
      ORDER BY total DESC"; 

    $rank = $row['total']+1; 
    // ## ... Then output things. 
} 

Я считаю, что конкретные строки кода, который неисправного меня в запросе RANK,

   WHERE total > $total 

Это не работает, потому что он не может принять расчетную сумму как аргумент в предложении WHERE?

И, наконец, есть ли более эффективный способ рассчитать все это в одном SQL-запросе?

ответ

4

Я думаю, вы можете использовать 'total total $ total'?

SELECT world, count(*) AS total 
FROM highscores 
GROUP BY world 
having total > $total 
ORDER BY total DESC 
+0

, или это приводит к тому же вопросу? – Louis

+0

Ошибки «Неверный SQL-синтаксис» на обоих «где» и «есть» :( –

+0

исправлено, это то, что вы использовали? – Louis

 Смежные вопросы

  • Нет связанных вопросов^_^