この表を複製:User_PostsCodeIgniterの3.0クエリバグ
ID | Upvotes | Downvotes | CAT |
___________________________________
42134 | 5 | 3 | Blogs|
------------------------------------
12342 | 7 | 1 | Blogs|
-------------------------------------
19344 | 6 | 2 | Blogs|
------------------------------------
を、私はそれのカテゴリ内のアイテムのランクを取得する必要があります。したがって、ID:19344はランクポジション2を持ち、アップフォートは4つで、12342の後ろに6つのアップフォートがあります。ランクは、そのカテゴリー内の(upvotes-downvotes)カウントによって決定されます。
私はこのMySQLクエリを書いています。 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'
戻り値(ランク= 2)。私は、コードイグナイタのクエリビルダーを通してそれを構築しようとすると、は、これは私が私には空の結果
$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();
リターンを得る
しかし、正しい結果である:配列(ランク=>);
ですから、私の質問は... ですが、なぜですか?
また、コード・イグニッタ・クエリー・ビルダーからこのクエリーを実行する代わりに、この問題がなぜ壊れているのかを知りたいと思っています。
SQLを 'SELECT(Upvotes - Downvotes)AS rank FROM User_Posts WHERE CAT = 'Blogs'とPOST_ID = 19344;に単純化できませんか? CIのクエリービルダーに実装するのは簡単すぎるようです。 – quickshiftin
@quickshiftin rankは(upvotes-downvotes)の数ではありませんが、同じカテゴリ内の他のアイテムに関するアイテムの位置です。 – Edward
あなたは特定のカテゴリの(upvotes-downvotes)の関係をどうやって説明していますか? – quickshiftin