В чем преимущество предлагаемого макета? Почему бы не просто упорядочить счет и покончить с этим? Я был бы смущен макетом, подобным тому, который вы описали.
м PHP-приложении у меня есть таблица статей mysql со следующими столбцами:
article_id articletext category_id score
Каждая статья имеет оценку, которая рассчитывается на основе ее популярности и относится к определенной категории (доступно около 10 категорий)
Мой вопрос: как я могу выполнить запрос, который возвращает статьи с наибольшим количеством баллов, чередуя их по категориям, чтобы, если это возможно, статьи той же категории не возвращались последовательно. Например, если статья с наивысшей оценкой имеет оценку 100, возвращаемый набор будет выглядеть примерно так:
article_id articletext category_id score
-----------------------------------------------------
142 <.....> 5 100
153 <.....> 3 97
119 <.....> 5 99
169 <.....> 2 93
121 <.....> 7 89
197 <.....> 2 92
.
.
.
Первое (наивное) решение, которое приходит в голову, - это выполнить 10 операций выбора (по 1 для каждой категории), упорядочить их по убыванию оценки, а затем на уровне PHP чередовать каждый возвращенный набор данных, выбирая по одному результату за раз и комбинируя их вместе. в новом массиве.
Есть ли более эффективный способ добиться этого? Если возможно на уровне MySQL