Сортировка по рейтингам в базе данных – Где разместить этот SQL? (PHP / MySQL)

ОК – я сразу пойду – вот код PHP, о котором идет речь:

<h2>Highest Rated:</h2> <?php // Our query base $query = $this->db->query("SELECT * FROM code ORDER BY rating DESC"); foreach($query->result() as $row) { ?> <h3><?php echo $row->title." ID: ";echo $row->id; ?></h3> <p class="author"><?php $query2 = $this->db->query("SELECT email FROM users WHERE id = ".$row->author); echo $query2->row('email');?></p> <?php echo ($this->bbcode->Parse($row->code)); ?> <?php } ?> 

Извините, это немного грязно, это все еще черновик. В любом случае, я исследовал способы использования системы рейтингов – ранее у меня было одно «рейтинговое» поле, как вы можете видеть по SELECT * FROM code ORDER BY rating DESC. Однако я быстро понял, что подсчет средних значений невозможен, поэтому я создал пять новых столбцов – рейтинг1, рейтинг2, рейтинг3, рейтинг4, рейтинг5. Поэтому, когда 5 пользователей оценивают что-то 4 звезды, рейтинг4 говорит 5 … это имеет смысл? Каждый столбец ratedx подсчитывает количество раз, когда рейтинг был указан.

Так или иначе: у меня есть этот оператор SQL:

SELECT id, (ifnull(rating1,0) + ifnull(rating2,0) + ifnull(rating3,0) + ifnull(rating4,0) + ifnull(rating5,0)) / ((rating1 IS NOT NULL) + (rating2 IS NOT NULL) + (rating3 IS NOT NULL) + (rating4 IS NOT NULL) + (rating5 IS NOT NULL)) AS average FROM code

Опять грязный, но эй. Теперь мне нужно знать, как я могу включить этот оператор SQL в свой скрипт? В идеале вы думаете, что общий запрос будет «SELECT * FROM code ORDER BY ( этот действительно длинный запрос, который я только что сказал ) DESC», но я не могу видеть, что работает … как мне это сделать? Запрос, сохранить результат в переменной, что-то вроде этого?

Если это не вызывает сожаления! Но я очень ценю помощь 🙂

разъем