Я потратил несколько часов, глядя на этот кусок кода. Свежие глаза, пожалуйста! Ниже приведена сокращенная версия запроса:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near
'FROM (`requests` c) JOIN `inventory` d ON `d`.`listing_seq_no` = `c' at line 7
SELECT DISTINCT `c`.`req_id`, `u`.`user_id`, `u`.`org_name`,
CONCAT_WS(' ', `l`.`strength`, `l`.`unit)` as dos, `c`.`quantity` AS quantity1,
(SELECT sum(quantity) from inventory d2
WHERE d2.listing_seq_no = c.listing_seq_no
) as inv_total,
FROM (`requests` c)
JOIN `inventory` d
ON `d`.`listing_seq_no` = `c`.`listing_seq_no`
JOIN `listings` l
ON `l`.`listing_seq_no` = `c`.`listing_seq_no`
EDIT: Исходный фрагмент кода CodeIgniter:
$this->db->select ( "c.req_id,
u.user_id,
u.org_name,
l.tradename as name,
CONCAT_WS(' ', l.strength, l.unit) as dos,
);
Это:
CONCAT_WS(' ', `l`.`strength`, `l`.`unit)`
Должно быть:
CONCAT_WS(' ', `l`.`strength`, `l`.`unit`)
unit
и скобкой может быть решением.
попробуйте удалить parens вокруг (requests
c)
Это старый вопрос, но вы можете использовать:
$this->db->select("<your_select_portion>", FALSE);
чтобы избежать возможности автоматического кавычки класса CI DB. Я поклонник использования функций MySQL в операциях select с CI, и это обычно устраняет проблему (за исключением тех случаев, когда вы начинаете использовать функцию кэширования запросов, но это другая история).