2015-09-11 4 views
2

У меня есть требование codeigniter-mysql для выбора значений от table_2, которые присоединяются к table_1 и должны применять инструкцию where в значении поля, разделенного запятой. Пробовал следующим образом,codeigniter FIND_IN_SET не работает с соединением

$where = $this->db->escape("FIND_IN_SET(table_1.id,table_2.places_id)<>0"); 

    $this->db->select('table_2.*,GROUP_CONCAT(table_1.location)AS location'); 
    $this->db->from('table_2'); 
    $this->db->join('table_1', $where); 
    $this->db->where('ltable_2.packages_id', $id); 
    $results = $this->db->get(); 
    return $results->result(); 

Но выше CodeIgniter возвращает объект БД следующий MySQL Query и ее не работает :(

SELECT `table_2`.*, GROUP_CONCAT(table_1.location)AS location FROM `table_2` JOIN `table_1` ON 'FIND_IN_SET(table_1.id,table_2.places_id)<>0' WHERE `ltable_2`.`packages_id` = <id-goes-here> 

Кажется, что кавычки 'FIND_IN_SET(table_1.id,table_2.places_id)<>0' создает проблему! Все помогает приветствуются разрешить вопрос.

+1

Попробуйте добавить false в конце '$ this-> db-> select ('table_2. *, GROUP_CONCAT (table_1.location) AS location', FALSE);' – Saty

+0

Почему вы избегаете часть 'FIND_IN_SET'? просто положите, как в 'join()' –

+0

Было бы неплохо увидеть, что ошибка db возвращена –

ответ

1

Вы можете попробовать $this->db->join('table_1', $where, false);. это было бы избавиться от кавычек, и если в противном случае ваш запрос хорошо, это должно быть хорошо.

Смежные вопросы