Мне осталось соединить 4 таблицы, чтобы получить СУММУ суммы, которая присутствует в первой таблице. До сих пор я пробовал много альтернатив, чтобы получить сумму прямо, но либо она становится 0 (если я group_by), либо дублирует, если я не использую group_by. Вот мой код:Codeigniter SUM и LEFT JOIN при удалении дубликатов
$this->db->select('COALESCE(SUM(cust_ reservation_request.dollar_amount), "0") as total');
$this->db->join('cust_ reservation_request', 'cust_ reservation_request.id = cust_reservations.rid', 'LEFT');
$this->db->join('attendees', 'cust_rid= cust_ reservation_request.id', 'LEFT');
$this->db->join('cust_reservation_cancelled', 'cust_reservation_cancelled.rid = cust_ reservation_request.id', 'LEFT');
$this->db->where('cust_ reservation_request.tid IN (5, 6, 7, 8)->where('attendees.status', 1)->where('cust_reservation_cancelled.rid IS NULL');
$this->db->group_by('cust_reservation_request.id');
$total = $this->db->get('cust_reservations')->row()->total;
Я получаю 0 в качестве значения $ общих переменных, в то время как она должна быть 288. Однако, когда я удалить $this->db->group_by('cust_reservation_request.id');
заявления, я дублировать на attendees.attendees.cust_rid
, что на самом деле есть, $ total становится 498, так как для одного и того же диска может быть более одного участника. Я хочу удалить этот дубликат, сохраняя фактический SUM всех полей dollar_amount.
Мои таблицы:
cust_ reservation_request
id // index, foreign key in rest of other tables
tid
uid
dollar_amount
cust_reservations
id
rid // related to id in cust_ reservation_request table
reservation_date
pay_token
cust_ reservation_cancelled
id
rid // related to cust_ reservation_request.id
cancel_date
attendees
id
cust_rid // its the same rid, related to cust_reservation_request.id
status
Как вы думаете, может быть любой безопасный способ сделать это, удаление дубликатов, делая SUM надлежащим образом?
Заранее благодарю за любую помощь.
Попробуйте запустить его без условия «WHERE cust_reservation_cancelled.rid IS NULL» – IgorM
Можете ли вы запустить его как SQL-запрос на сервере, не имея дело с каркасом? Таким образом будет легче отлаживать – IgorM
Привет @IgorM спасибо за ваш ответ. Я попробовал запустить его на сервере, он возвращает 0 при добавлении group_by и возвращает повторяющиеся строки после использования SUM. Я также попытался использовать SELECT * вместо SUM только для того, чтобы увидеть возвращаемые результаты, и там я знаю, что он возвращает строку два раза. – Zafar