2015-08-21 53 views
0

我有兩個函數,我使用2個不同的查詢。我需要創建一個函數來檢索項目的視圖數量。下面是兩個功能:PHP - 2一個PHP函數中的MySQL查詢

public function products_views(){ 
    $this->db->select('*'); 
    $this->db->from('products'); 
    $this->db->order_by('view_count', 'DESC'); 

    $query = $this->db->get(); 
    return $query->result(); 
}  



public function getViewCount($product_id) { 
    $this->db->select('COUNT(*) AS cnt'); 
    $this->db->from(views); 
    $this->db->where('product_id', $product_id); 
    $query = $this->db->get(); 

    return $query->row()->cnt; 
} 

我想要一個查詢,將返回所有的總觀看次數爲每個產品從表視圖,並顯示所有的顯示總觀看次數的產品表中的產品。

+0

表格如何關聯?我發現在視圖中有一個product_id,但在產品中有view_count。您應該可以通過連接和分組進行合併。 –

+0

將兩個查詢的結果組合在一個數組中。並返回該數組。 – Nitin

+0

這兩個表都有關於它們的product_id。 – Stretcher25

回答

1

您需要使用JOINproductsviews連接products.idviews.product_id。因此,請求應如下所示:

SELECT products.id, COUNT(views.id) as cnt 
FROM views JOIN product ON products.id = views.product_id 
GROUP BY views.product_id 

您需要使用活動記錄來解釋此請求。

+0

太好了,那有效。如果我想要顯示產品表中的所有產品,甚至那些在視圖表中沒有視圖記錄的產品,該怎麼辦? – Stretcher25

+0

將'FROM views JOIN product'替換爲'FROM product JOIN views'和group by products.id – Ratuvog