У меня есть функция поиска для поиска по различным критериям из таблицы db. здесь есть «поле таблицы с некоторыми даннымиmysql поиск поискового запроса с полями с mulitivalued
id first_name last_name province_id 1 ali alii 2,12 2 ahmad ahmadi 22,1,4
человек может находиться в другой провинции, и его сохраняется в таблице разделения на„“в поле провинции, я знаю, что это не нормируется. я использую с последующей функции для поиска
$WHERE_ARR = array();
if(trim($first_name)!=""){
$WHERE_ARR['first_name'] = " p.first_name like '%".$first_name."%' ";
}
if(trim($last_name)!=""){
$WHERE_ARR['last_name'] = " p.last_name like '%".$last_name."%' ";
}
if(trim($province)!=""){
$WHERE_ARR['province'] = " p.province_id = ".$province." ";
}
$WHERE_STR = implode(' AND ', $WHERE_ARR);
$WHERE_STR = (trim($WHERE_STR)!="")?" AND " . $WHERE_STR:'';
$QUERY = "
SELECT p.*,pr.province
FROM ndi_participants p,ndi_provinces pr
WHERE pr.province_id = p.province_id
". $WHERE_STR . "
ORDER BY pr.province ASC
LIMIT ".$start.", " . $perpage . "
";
return $this->db->query($QUERY);
наверняка это не точно, когда я поиск по полю провинции. как я могу искать по полю провинции, когда он многозначен отделяя от «»
примечание: Я использую CodeIgniter
спасибо за ваш помогает
Find_in_set - это функция MySQL, поэтому она должна быть без кавычек. '" p.province_id = FIND_IN_SET (". $ province.", p.province_id) ";' – Narek
@narek: Я согласен. обновленный ответ. Спасибо –
Очень важно отметить, что FIND_IN_SET вернет индекс текущей строки, Например, SELECT FIND_IN_SET ('1', '4,3,7,21,1'); вернет 5, а не 1. Таким образом, запрос должен быть изменен, чтобы проверить, что возвращаемое значение функции должно быть больше, чем '0', а не равное значению, которое вы хотите проверить. – Vijay