duplizieren diese Tabelle: User_PostsCodeigniter 3.0 Abfrage Fehler
ID | Upvotes | Downvotes | CAT |
___________________________________
42134 | 5 | 3 | Blogs|
------------------------------------
12342 | 7 | 1 | Blogs|
-------------------------------------
19344 | 6 | 2 | Blogs|
------------------------------------
Ich brauche den Rang eines Artikels erhalten innerhalb seiner Kategorie. Daher wird ID: 19344 Rang 2 mit 4 Upvotes haben, hinter 12342 mit 6 Upvotes. Der Rang wird durch (upvotes-downvotes) in seiner Kategorie bestimmt.
Also schrieb ich diese MySQL-Abfrage.
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'
Returns mir (Rang = 2), wenn sie direkt in mysql laufen. Dies ist das richtige Ergebnis
aber wenn ich versuche, es zu bauen durch Query Builder den Code-Zünder bekomme ich die
$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();
kehrt zu mir ein leeres Ergebnis: array (Rang =>);
also dann ist meine Frage ... aber warum?
Ich werde auch eine Antwort akzeptieren wird eine alternative Möglichkeit, diese Abfrage von Code-Zünder Query Builder ausführen, aber im Idealfall würde ich gerne wissen, warum dieses Ding gebrochen ist.
Können Sie nicht die SQL zu 'SELECT (Upvotes - Downvotes) AS Rang FROM User_Posts WHERE CAT = 'Blogs' UND POST_ID = 19344;'? Scheint so, als ob es trivial wäre, in Query Builder von CI auch zu implementieren. – quickshiftin
@quickshiftin Rang ist nicht die Anzahl der (upvotes-downvotes), aber es ist die Position des Elements in Bezug auf jedes andere Element in der gleichen Kategorie. – Edward
Ok, wie berücksichtigst du Bindungen in (upvotes-downvotes) für eine bestimmte Kategorie? – quickshiftin