Mysql: порядок возврата по рейтингу - PullRequest
0 голосов
/ 04 января 2012

Есть ли способ вернуть рейтинг Mysql orderBy как часть полученной записи?

Например, допустим, у меня есть таблица комментариев, где я запрашиваю результаты, ранжированные по:

comment_rating и comment_length, используя orderBy('r.comment_rating*r.comment_length').

Теперь я хочу, чтобы результирующие записи включали значение их соответствующих comment_rating*comment_length вычислений.

Возможно ли это?

edit: также, выполняет ли доктрина вычисления ранжирования дважды, если я делаю это, а также использую тот же алгоритм для orderBy?

Ответы [ 5 ]

2 голосов
/ 04 января 2012

Вы имеете в виду что-то вроде:

SELECT *, (comment_rating * comment_length) AS ranking FROM comment ORDER BY ranking DESC

Редактировать

Не использовал Doctrine, но после быстрого взгляда на документацию , я думаю, это будет примерно так:

$q = Doctrine_Query::create()
    ->select('*, (comment_rating * comment_length) AS ranking')
    ->from('comment')
    ->orderBy('ranking');
$comments = $q->execute();
1 голос
/ 04 января 2012

Попробуйте это:

Select comment_rating, comment_length, 
       (comment_rating * comment_length) as rat_len 
From comment 
OrderBy rat_len
0 голосов
/ 04 января 2012
SELECT
  comment_rating,
  comment_length,
  comment_rating*comment_length AS comment_rank
FROM
  tablename
ORDER BY
  comment_rank;
0 голосов
/ 04 января 2012

Все, что вам нужно сделать, это включить

(comment_rating*comment_length) as comment_ranking

в списке полей SELECT.

0 голосов
/ 04 января 2012

Попробуйте это:

SELECT <yourFields>, (r.comment_rating * r.comment_length) AS Rating FROM ...

Документация: Doctrine Query Language: Совокупные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...