0

Wilson Score Confidence SQL コードを Codeigniter アクティブ レコード コードに変換できないようです。Wilson Score Confidence の通常の SQL は次のとおりです。

SELECT *, ((likes+ 1.9208) / (likes + dislikes) - 
                   1.96 * SQRT((likes * dislikes) / (likes + dislikes) + 0.9604) / 
                          (likes + dislikes)) / (1 + 3.8416 / (likes + dislikes)) 
       AS ci_lower_bound FROM widgets WHERE likes + dislikes > 0 
       ORDER BY ci_lower_bound DESC;

これは次から取得しました: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

これは私の試みた翻訳で、うまくいかなかったようです:

        $this->db->select('*, ((likes + 1.9208) / (likes + dislikes) - 1.96 * SQRT((likes * dislikes) / (likes + dislikes) + 0.9604) / (likes + dislikes)) / (1 + 3.8416 / (likes + dislikes)) AS ci_lower_bound');
        $this->db->where('likes + dislikes >', 0);
        $this->db->order_by("ci_lower_bound", "desc");
        $query = $this->db->get('posts', $config['per_page'], $this->uri->segment(1)); 
        $data['results'] = $query->result(); 

結果は常に空になります。

4

2 に答える 2

0

うーん...結局のところ、私のコードは正しかったことがわかりました。MySQL にはいくつかの不具合がありました。

$this->db->select('*, ((likes + 1.9208) / (likes + dislikes) - 1.96 * SQRT((likes * dislikes) / (likes + dislikes) + 0.9604) / (likes + dislikes)) / (1 + 3.8416 / (likes + dislikes)) AS ci_lower_bound');
$this->db->where('likes + dislikes >', 0);
$this->db->order_by("ci_lower_bound", "desc");
$query = $this->db->get('posts', $config['per_page'], $this->uri->segment(1)); 
$data['results'] = $query->result(); 
于 2013-06-13T12:18:05.843 に答える