Скажем, у меня есть таблица вроде этого (это только упрощенный пример, реальная таблица Я говорю о гораздо сложнее):Вычисление позиции строки в таблице
CREATE TABLE media (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
voted INT NOT NULL DEFAULT 0,
rating FLOAT NOT NULL DEFAULT 0
) ENGINE = INNODB;
проголосовали столбец представляет собой количество голосов, которые получил элемент, и рейтинг столбец представляет собой общую оценку объекта.
Теперь, что я хочу сделать, это выбрать один элемент из таблицы на основе идентификатора, что-то вроде:
SELECT m.* FROM media AS m WHERE id = 5;
Но, кроме того, я хочу, чтобы вычислить положение этой строки на основе рейтинг и выберите это как дополнительный столбец, скажем, имя site_rank (поэтому чем выше рейтинг строки, тем выше будет его site_rank, я надеюсь, что я объяснил это хорошо). Я предполагаю, что это может быть достигнуто с помощью подзапроса, но я не уверен, как это сделать.
Любая помощь?
Могу ли я предложить внедрить столбец Site_Rank, который обновляется каждый так часто? Наверное, было бы намного проще. –
Таким образом вы делаете один действительно большой вызов базы данных (или несколько меньших), а затем обновляете каждый. И тогда вам не нужно ничего делать, как 5 минут. –