3
我在codeigniter.Here做一個項目,我想加入三個表加入笨三個表具有一對多的關係
客戶(ID,姓名,電子郵件,adminId,CAMPAIGNID,dateAdded,IS_DELETED)
campaign(id,name,adminId)and
order(id,name,cost,dateAdded,clientId)。
從這些表格中,我想選擇(在兩個日期之間)添加的客戶端數量,廣告系列名稱和總訂單成本。當我加入兩個表格(客戶端和廣告系列)時,它會返回正確的結果。
我使用的查詢是
$this->db->select('clients.id AS my_client,
clients.name AS client_name,
campaign.name AS campaign_name,
DATE(clients.dateAdded) as client_date,
COUNT(clients.id) AS num_rows');
$this->db->from('clients');
$this->db->where('clients.adminId', $adminId);
$this->db->where('DATE(clients.dateAdded) >=', $from_date);
$this->db->where('DATE(clients.dateAdded) <=', $to_date);
$this->db->join('campaign', 'campaign.id = clients.campaignId', 'left');
$this->db->group_by('campaign_name');
$query = $this->db->get();
return $query->result();
但是,當我加入三個表(客戶,廣告活動,順序)它沒有返回客戶和訂單之間的正確result.The關係之一many.Ie一個客戶端可以有不止一個order.So它不會給正確的值兩個dates.The之間增加客戶的總數聯接查詢我用來連接三個表是
$this->db->select('clients.id AS my_client,
clients.name AS client_name,
campaign.name AS campaign_name,
DATE(clients.dateAdded) AS client_date,
SUM(order.cost) AS order_cost,
COUNT(clients.id) AS num_rows');
$this->db->from('clients');
$this->db->where('clients.adminId', $adminId);
$this->db->where('clients.is_deleted', 0);
$this->db->where('DATE(clients.dateAdded) >=', $from_date);
$this->db->where('DATE(clients.dateAdded) <=', $to_date);
$this->db->join('campaign', 'campaign.id = clients.campaignId', 'left');
$this->db->join('order', 'order.clientId = clients.id', 'left');
$this->db->group_by('campaign_name');
$query = $this->db->get();
return $query->result();
任何人都可以有一些想法來做到這一點。在此先感謝
你是否得到任何結果,或者只是不是你期望的結果? – Gavin 2013-03-12 10:28:19
@Gavin是的,我得到了一些結果,但不是預期的結果。 – Balu 2013-03-12 10:35:32
我在你的兩個查詢中注意到的一件事是,你在第二個查詢中使用'clients.is_deleted = 0',因爲你不是第一個查詢。除此之外,你的查詢看起來對我很好嗎? – Gavin 2013-03-12 11:01:54