Я заметил, что конструктор запросов добавил дополнительную скобку » ( «

#mysql #codeigniter #mysql-8.0

Вопрос:

Я использую CI 3.1.11 с mysql 5.7, и он работает нормально. Тем не менее, я тестирую обновление своей базы данных до mysql 8, и некоторый запрос, сгенерированный построителем запросов, вернул ошибку. После проверки сообщения об ошибке я заметил, что конструктор запросов добавил дополнительный » ( » amp; » ) » в мой первый подзапрос «… ИЗ ((ВЫБЕРИТЕ… ) a) ВНУТРЕННЕЕ СОЕДИНЕНИЕ…» и вызвало ошибку в mysql 8 (mysql 5.7, похоже, игнорирует эти дополнительные функции » ( «» ) » и без ошибок). Что я должен сделать, чтобы исправить это? Это ошибка CI или ошибка mysql 8?

 My Code: $this-gt;db-gt;select("b.item_code,b.item_name,c.cat_name,a.sale_qty,a.saler_qty,a.net_qty");  $this-gt;db-gt;from(" ( SELECT a.wa_id,a.item_id,a.sale_qty,COALESCE(b.saler_qty,0) as saler_qty,(a.sale_qty - COALESCE(b.saler_qty,0)) AS net_qty  FROM (SELECT b.wa_id,d.item_id,SUM(d.qty)as sale_qty FROM tbl_bill a  INNER JOIN tbl_sale b ON b.sale_id = a.sale_id  INNER JOIN tbl_bill_detail d ON d.bill_id = a.bill_id  {$join}  {$where} {$w_bill} {$w_cust} {$created_by}  GROUP BY b.wa_id,d.item_id) a  LEFT JOIN (SELECT c.wa_id,b.item_id,SUM(b.qty)as saler_qty  FROM tbl_bill a  INNER JOIN tbl_sale_item_return c on c.bill_id = a.bill_id  INNER JOIN tbl_sale_item_return_details b ON b.sale_ireturn_id = c.sale_ireturn_id  {$join}  {$where2} {$w_bill} {$w_cust}  GROUP BY c.wa_id,b.item_id)b ON b.wa_id = a.wa_id AND b.item_id = a.item_id) a");  $this-gt;db-gt;join("tbl_item b","b.item_id = a.item_id","INNER");  $this-gt;db-gt;join("tbl_item_category c","c.cat_id = b.cat_id","INNER");  $this-gt;db-gt;order_by("c.cat_name,b.item_code","ASC");   $q = $this-gt;db-gt;get();  

Сообщение об ошибке: Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом ‘) ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_item b НА b.item_id = a.item_id ВНУТРЕННЕЕ СОЕДИНЕНИЕ `tbl_ite’ в строке 15

Выберите б.item_code, б.item_name, гр.cat_name, а.sale_qty, а.saler_qty, а.net_qty от ((выбора.wa_id, а.item_id, телевизор.sale_qty, сливаются(б.saler_qty, 0) как saler_qty, (а.sale_qty — сливаются(б.saler_qty, 0)) как net_qty от (выберите B.wa_id, д. item_id, сумма(ум.кол-во)как sale_qty от tbl_bill внутреннего объединения tbl_sale Б О Б.sale_id = а.sale_id внутреннее соединение tbl_bill_detail д’д.bill_id = а.bill_id внутреннее соединение tbl_bill_outlet_1 Е О Е.bill_id = а.bill_id где.eff_date между ‘2019-10-01’ и ‘2019-12-03’ группы Б.wa_id, д. item_id) левое соединение (выбрать ц.wa_id, б.item_id, сумма(род.кол-во)как saler_qty ИЗ tbl_bill ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_sale_item_return c на c.bill_id = a.bill_id ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_sale_item_return_details b НА b.sale_ireturn_id = c.sale_ireturn_id ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_bill_outlet_1 e НА e.bill_id = a.bill_id, ГДЕ c.дата перехода МЕЖДУ «2019-10-01» И «2019-12-03» ГРУППА ПО c.wa_id, b.item_id)b НА b.wa_id = a.wa_id И b.item_id = a.item_id) a) ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_item b НА b.item_id = a.item_id ВНУТРЕННЕЕ СОЕДИНЕНИЕ tbl_item_category c НА c.cat_id = b.cat_id ПОРЯДОК ПО c.cat_name ASC, b.item_code ASC

 Correct Query: SELECT b.item_code, b.item_name, c.cat_name, a.sale_qty, a.saler_qty, a.net_qty FROM (SELECT a.wa_id, a.item_id, a.sale_qty, COALESCE(b.saler_qty, 0) as saler_qty, (a.sale_qty - COALESCE(b.saler_qty, 0)) AS net_qty FROM (SELECT b.wa_id, d.item_id, SUM(d.qty)as sale_qty FROM tbl_bill a INNER JOIN tbl_sale b ON b.sale_id = a.sale_id INNER JOIN tbl_bill_detail d ON d.bill_id = a.bill_id INNER JOIN tbl_bill_outlet_1 e ON e.bill_id = a.bill_id WHERE a.eff_date BETWEEN '2019-10-01' AND '2019-12-03' GROUP BY b.wa_id, d.item_id) a LEFT JOIN (SELECT c.wa_id, b.item_id, SUM(b.qty)as saler_qty FROM tbl_bill a INNER JOIN tbl_sale_item_return c on c.bill_id = a.bill_id INNER JOIN tbl_sale_item_return_details b ON b.sale_ireturn_id = c.sale_ireturn_id INNER JOIN tbl_bill_outlet_1 e ON e.bill_id = a.bill_id WHERE c.tran_date BETWEEN '2019-10-01' AND '2019-12-03' GROUP BY c.wa_id, b.item_id)b ON b.wa_id = a.wa_id AND b.item_id = a.item_id) a INNER JOIN tbl_item b ON b.item_id = a.item_id INNER JOIN tbl_item_category c ON c.cat_id = b.cat_id ORDER BY c.cat_name ASC, b.item_code ASC