2012-07-01 2 views
1

Я пытаюсь сортировать данные по этой странице: http://www.excelwrestling.com/sortbymostwinsbyweight.phpMySql Count Содержание и авто +1

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

Это то, что я имея смотреть на учебники, но они не правильно упорядочены:

$query="SELECT *,Winner, COUNT(*) as count FROM results GROUP BY Winner ORDER BY Weight ASC "; 
$result=mysql_query($query); 

Спасибо!

+0

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

+0

Как вы хотите отсортировать имена? В алфавитном порядке? – PriestVallon

+0

Как вы храните, что wrester выиграл матч? –

ответ

0
SELECT ww.* 
FROM 
     (SELECT Weight, Winner, COUNT(*) AS Wins 
      FROM results 
      GROUP BY Weight, Winner 
     ) AS ww 
    JOIN 
     (SELECT DISTINCT Weight 
      FROM results 
     ) AS dw 
      ON ww.Weight = dw.Weight 
      AND ww.Winner = 
       (SELECT r.Winner 
        FROM results AS r 
        WHERE r.Weight = dw.Weight 
        GROUP BY r.Winner 
        ORDER BY COUNT(*) DESC 
        LIMIT 1 
       ) ; 

Индекс по (Weight, Winner) поможет эффективность запроса.


Вы можете получить правильный результат с этим запросом, тоже, но я не рекомендую его, как он использует некоторые нестандартные функции и поведение MySQL, и, следовательно, может сломаться в будущем:

SELECT Weight, Winner, Wins 
FROM 
     (SELECT Weight, Winner, COUNT(*) AS Wins 
      FROM results 
      GROUP BY Weight, Winner 
      ORDER BY Weight, Wins DESC 
     ) AS ww 
GROUP BY Weight ; 
+0

Это имеет смысл для меня, но я не могу заставить его работать. Кроме того, у меня нет ничего настроенного для WINS. Я надеялся, что это просто даст им номер автоматически. –

+0

Это дает вам номер. Я просто переименовал (назвал) его 'Wins' вместо вашего' count'. –

-1

Вы заказываете только winner, когда вы говорите, что ваши требования соответствуют «большинству побед». Это означает, что вы должны иметь:

SELECT ... 
FROM ... 
GROUP BY Winner 
ORDER BY Weight ASC, count DESC 
     ^^^^^^^^^^^^^---- order by the aggregate results. 

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

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