Дублируйте эту таблицу: User_Posts
ID | Upvotes | Downvotes | CAT |
___________________________________
42134 | 5 | 3 | Blogs|
------------------------------------
12342 | 7 | 1 | Blogs|
-------------------------------------
19344 | 6 | 2 | Blogs|
------------------------------------
Мне нужно получить ранг элемента внутри этой категории. Поэтому ID: 19344 будет иметь позицию позиции 2, с 4 upvotes, за 12342 с 6 upvotes. Ранг определяется счетом (upvotes-downvotes) в пределах этой категории.
Итак, я написал этот запрос MySQL.
SELECT rank FROM (SELECT *, @rownum:[email protected] + 1 AS rank
FROM User_Posts where CAT= 'Blogs' order by
(Upvotes-Downvotes) DESC) d,
(SELECT @rownum:=0) t2 WHERE POST_ID = '19344'
Возвращается ко мне (Rank = 2) при запуске непосредственно в mysql. Это правильный результат
Однако, когда я пытаюсь построить его через построитель запросов кода-воспламенителя, я получаю
$table = 'User_Posts';
$CAT= 'Blogs';
$POST_ID = '19344';
$sql = "SELECT rank FROM (SELECT *, @rownum:[email protected] + 1 AS
rank FROM $table where CAT= ?
order by (Upvotes-Downvotes) DESC) d,
(SELECT @rownum:=0) t2 WHERE POST_ID= ?";
$query= $this->db->query($sql, array($CAT,$POST_ID))->row_array();
возвращает мне пустой результат: array (rank = > );
тогда мой вопрос... но почему?
Я также согласен, что ответ будет альтернативным способом запуска этого запроса из построителя запросов с воспламенением кода, но в идеале я хотел бы знать, почему эта вещь нарушена.