2017-08-08 43 views
0

如何加入下面的兩個函數並使它們在同一個$qry內?重新排列codeigniter mysql

public function get_page_likes() { 
    $qry = $this->db->query("SELECT p.id, p.tid, IF(SUM(pl.like) > 0, SUM(pl.like), 0) AS likes FROM pages_test AS p LEFT JOIN page_likes_test pl ON p.id = pl.pid AND p.tid = pl.tid GROUP BY p.tid, p.id HAVING likes >= 0 ORDER BY p.id, p.tid"); 
    return $qry->result_array(); 
} 

public function get_page_dislikes() { 
    $qry = $this->db->query("SELECT p.id, p.tid, IF(SUM(pl.dislike) > 0, SUM(pl.dislike), 0) AS dislikes FROM pages_test AS p LEFT JOIN page_likes_test pl ON p.id = pl.pid AND p.tid = pl.tid GROUP BY p.tid, p.id HAVING dislikes >= 0 ORDER BY p.id, p.tid"); 
    return $qry->result_array(); 
} 

https://i.stack.imgur.com/NJsEn.png

+1

請添加您的表格結構和所需結果的示例。 – Kisaragi

+0

@kisaragi謝謝我剛添加了我的表結構,結果和詳細說明 – Mason

回答

0

更改查詢像

$qry = $this->db->query("SELECT p.id, p.tid, SUM(pl.like) AS likes, SUM(pl.dislike) AS dislikes FROM pages_test AS p LEFT JOIN page_likes_test pl ON p.id = pl.pid AND p.tid = pl.tid GROUP BY p.tid, p.id"); 

回報$ qry-> result_array();

+0

非常感謝!這幾乎工作:)。但它只是從「page_likes_test」中獲取值。它還需要從第二個表「pages_test」中獲取數據(如圖所示)。有任何想法嗎?在此先感謝 – Mason

+0

好吧,我會看到它 –

+0

嘿梅森!請檢查它我已經改變了查詢 –

0

https://www.codeigniter.com/userguide3/database/query_builder.html

public function get_page_likes_dislikes(){ 

    return $this->db->select('p.id, p.tid, IF(SUM(pl.like) > 0, SUM(pl.like), 0) AS likes, IF(SUM(pl.dislike) > 0, SUM(pl.dislike), 0) AS dislikes') 
     ->join('page_likes_test pl', 'p.id = pl.pid AND p.tid = pl.tid', 'left') 
     ->group_by('p.tid, p.id') 
     ->order_by('p.id, p.tid') 
     ->get('pages_test p')->result_array(); 
} 
+0

謝謝你,但由於某種原因,我得到一個錯誤,說'未知列p.id在字段列表',即使我有我的表中的'id' – Mason

+0

現在它會工作。我從來沒有給過page_tests一個別名 –