Я работаю над запросом на соединение, в котором мне нужно получить данные из столбца, содержащего значения, разделенные запятыми. Например, allowed_activity
содержит 1,2,3,4,5,6
это разрешенное activity_id
.
Итак, в запросе я проверяю, разрешена ли текущая активность, и для этого я использовал where_in
, а также пробовал find_in_set
в состоянии where
.
Вот эта часть запроса:
$this->db->where_in('a.allowed_activity',$activity_id);
//And With FIND_IN_SET
$this->db->where("FIND_IN_SET($activity_id, a.allowed_activity) !=",0);
Проблема или путаница
Когда я использую where_in
, это не дает мне результата. Но если я использую FIND_IN_SET
, он вернет желаемый результат. Я думал, что where_in
может справиться с задачей, но это не так.
Просто хочу знать, почему
find_in_set
работает иначе, чемwhere_in
Из-за того, что обе функции работают так же, как поиск данных в списке, разделенном запятыми.
Вот полный запрос:
SELECT mycolumns
FROM `table1` as `ea`
LEFT OUTER JOIN `table2` as `a` ON `ea`.`package_id` = `a`.`id`
LEFT OUTER JOIN `table3` as `e` ON `ea`.`employer_id` = `e`.`id`
WHERE `ea`.`card_id` > 0
AND FIND_IN_SET(6, a.allowed_activity) !=0
AND `ea`.`id` = '6'
ORDER BY `ea`.`creation_date` DESC
Я использую активную запись Codeigniter.