Обработка связей при ранжировании от наивысшего до самого низкого

Я пытаюсь создать менеджер ранжирования для небольшого проекта. Суммы хранятся в базе данных. Я могу легко получить max и min, используя mysql, а также упорядочить записи по убыванию. Проблема возникает, когда есть связь. Мне нужно чтобы показать галстук в форме: 1,2,3,3,4,5,6,7,7,7,7 и т. д. Повторные номера будут показывать связи. Я думал о способах достижения вышеуказанного но мне нужно больше идей, мое кажется длинным и сложным.

Может ли кто-нибудь поделиться своей идеей делать связи.

Не могли бы вы просто сделать это в SQL? Записи с двойными рядами все равно будут выводиться, однако порядок в галстуке не будет определен.

SELECT id, rank FROM mytable ORDER BY rank ASC; 

Ах, похоже, я неправильно понял вопрос, спасибо Матчу. Этого можно достичь с помощью относительно простого SQL-запроса. Ключ использует подзапрос, чтобы подсчитать отличительные оценки, которые уже прошли.

 SELECT id, score, ( SELECT COUNT(DISTINCT score) + 1 FROM mytable WHERE score < outerscore.score ORDER BY score ASC ) AS rank FROM mytable as outertable ORDER BY score ASC; 
 $data = array( 'A'=>19,'B'=>18,'C'=>17,'D'=>17,'E'=>16,'F'=>15 ); $rank = 0; $lastScore = PHP_INT_MAX; foreach( $data as $name=>$score ) { if ( $lastScore !== $score ) { $lastScore = $score; $rank += 1; } printf("%s %d (%d)\n", $name, $score, $rank); } 

печать

 A 19 (1) B 18 (2) C 17 (3) D 17 (3) E 16 (4) F 15 (5)