CodeIgniter Concat

0

Я потратил несколько часов, глядя на этот кусок кода. Свежие глаза, пожалуйста! Ниже приведена сокращенная версия запроса:

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,
    );
  • 0
    откуда берется псевдоним 'l' в функции concat?
  • 0
    К сожалению, это посторонний, (я пытался удалить как можно больше "другого кода"
Показать ещё 4 комментария
Теги:

3 ответа

5
Лучший ответ

Это:

CONCAT_WS(' ', `l`.`strength`, `l`.`unit)`

Должно быть:

CONCAT_WS(' ', `l`.`strength`, `l`.`unit`)
  • 0
    Интересно ... не совсем уверен, почему это происходит (генерируется из Codeigniter)
  • 2
    Я не использовал CodeIgniter, но я думаю, что пробел между unit и скобкой может быть решением.
Показать ещё 1 комментарий
1

попробуйте удалить parens вокруг (requests c)

  • 0
    То же, что и комментарий, который я разместил выше
  • 0
    Майклз комментирует мой ответ (который я удалил): я не знаю, как убрать круглые скобки, так как исходный вызов функции был сделан с использованием CodeIgniter в качестве основы как: $ this-> db-> from ('reports c') ..
Показать ещё 3 комментария
0

Это старый вопрос, но вы можете использовать:

$this->db->select("<your_select_portion>", FALSE);

чтобы избежать возможности автоматического кавычки класса CI DB. Я поклонник использования функций MySQL в операциях select с CI, и это обычно устраняет проблему (за исключением тех случаев, когда вы начинаете использовать функцию кэширования запросов, но это другая история).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню