Упорядочить результаты базы данных по байесовскому рейтингу

Я не уверен, что это вообще возможно, но мне нужно подтверждение, прежде чем делать это "уродливым" способом :)

Итак, "результаты" такие сообщения в базе данных, которые хранятся следующим образом:

  • таблица сообщений, которая содержит все важные данные, такие как идентификатор, заголовок, контент
  • мета-таблица сообщений, которая содержит дополнительные данные сообщений, такие как рейтинг ( this_rating ) и количество голосов ( this_num_votes ). Эти данные хранятся парами, в таблице 3 столбца: ID поста / ключ / значение. Это в основном структура таблицы WordPress.

Я хочу вытащить сообщения с наивысшим рейтингом, отсортированные по следующей формуле:

br = ((avg_num_votes * avg_rating) + (this_num_votes * this_rating)) / (avg_num_votes + this_num_votes )

, который я украл из формы здесь .

avg_num_votes и avg_rating - известные переменные (они обновляются при каждом голосовании), поэтому их не нужно вычислять.

Можно ли это сделать с помощью запроса mysql? Или мне нужно получить все сообщения и выполнить сортировку с помощью PHP?

5
задан nice ass 21 November 2011 в 16:26
поделиться