我有一個'網址'表,每個'網址'可能有多個'轉換'附加到他們。我想累積所有轉化的數值($),並計算與每個網址相關的轉化數量。顯示需要累積的多個值的左連接
此刻,我正在使用左外部聯接將url表加入轉換表,但如果附加了多個轉換,這隻會重複URL記錄。我想知道我能做些什麼來解決這個問題,無論是在數據庫端或邏輯側(我使用PHP /笨。)
如果有幫助,這裏是笨的Active Record查詢:
$this->db->select('url.id, url.url, url.clicks,url.affiliate_url,conversion.commission');
$this->db->from('url');
$this->db->join('conversion', 'url.id = conversion.url_id','left outer');
$this->db->where('url.user_id = '.$this->user_id);
$this->db->order_by('url.id','DESC');
$data['urls'] = $this->db->get()->result();
在此先感謝!
湯姆
解決方案:
$this->db->select('url.id, url.url, url.clicks,url.affiliate_url,count(conversion.id) AS conversions,sum(conversion.commission) AS earnings');
$this->db->from('url');
$this->db->join('conversion', 'url.id = conversion.url_id','left outer');
$this->db->where('url.user_id = '.$this->user_id);
$this->db->group_by('url.id');
$this->db->order_by('url.id','DESC');
$data['urls'] = $this->db->get()->result();
enter code here
絕對的英雄!我將在上面發佈我的代碼。 – tommizzle 2010-11-18 12:31:47
您還需要爲GROUP BY列編制索引。 – 2010-11-19 16:03:03
好點布魯斯,這會很好地加快你的查詢。請記住,如果表格非常龐大(數百萬行),它可能會降低更新速度並插入一點點。 – 2010-11-19 16:09:39