Я делаю проект в codeigniter.Here я хочу присоединиться три таблицыприсоединиться три таблицы в CodeIgniter с одного до многих отношений
клиентов (номер, имя, адрес электронной почты, adminId, CAMPAIGNID, dateAdded, is_deleted)
Кампания (id, name, adminId) и
заказ (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
@ Gavin Да. У меня есть некоторые результаты. Но не ожидаемый. – Balu
Единственное, что я заметил между вашими двумя запросами, это то, что вы используете 'clients.is_deleted = 0' на свой второй запрос, где вы не на первом. Кроме этого, ваш запрос выглядит хорошо для меня? – Gavin