codeigniterでプロジェクトを行っています。ここで3つのテーブルを結合したいと思います。
クライアント(id、name、email、adminId、campaignId、dateAdded、is_deleted)
キャンペーン(id、name、adminId)および
order(id、name、cost、dateAdded、clientId)。
これらのテーブルから、追加されたクライアントの数、キャンペーン名、およびクライアントの合計注文コストを(2つの日付の間に)選択したいと思います.2つのテーブル(クライアントとキャンペーン)を結合すると、正しい結果が返されます。
私が使用したクエリは
$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();
しかし、3つのテーブル(クライアント、キャンペーン、注文)を結合すると、正しい結果が返されません。クライアントと注文の関係は1対多です。つまり、1つのクライアントが複数の注文を持つことができるため、合計の正しい値が得られません。 2つの日付の間に追加されたクライアントの数。3つのテーブルを結合するために使用した結合クエリは
$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();
誰かがこれを行うためのアイデアを持っていますか?