2013-04-13 5 views
-1

У меня есть test таблица, которая являетсяСравните значение столбца с более чем одной в Mysql

enter image description here

это мой стол я сравнивая строку и получить entity_id из этой таблицы

мой SQL-запрос для одно значение поиска похоже на это

Select entity_id From test Where BINARY value = '".$my_search_list."' 

это работает отлично, если я ищу одиночное значение l икэ Shirt

я хочу найти несколько значений и при попытке его значения, разделенные запятыми как Root,Appare,hand Bags (больше, чем работы) не дает мне выход

я также пытался с этим

Select entity_id From test Where BINARY value IN ('".$my_search_list."') 

Я не хочу несколько запросов, я хочу сделать это в одном запросе, возможно ли это ???

+0

Вам нужен цикл, чтобы соответствовать всему ключевому слову, в этом случае вы можете решить, если лучше использовать 'and' оператор или оператор 'или' – Fabio

+0

@Fabio вы имеете в виду в PHP ??? или в MySql ?? –

+0

В php, создайте массив поискового ключевого слова и петли в нем, создав части запроса, которые вы объедините в одном – Fabio

ответ

0

то, что я думал, как я сказал, чтобы создать массив ключевых слов и посмотреть, что один матч критерии затем показать весь результат.

$search = array('Root','Appare','hand Bags'); 
$sql = "SELECT `entity_id` FROM `test` WHERE "; 
$count = 0; 
$search_size = count($search); 

foreach($search as $key) 
{ 
    $count++; 
    if($count < $search_size) 
    { 
     $sql .= "(`value` = '".$key."') or "; 
    } 
    else if ($count == $search_size) 
    { 
     $sql .= "(`value` = '".$key."')"; 
    } 
} 

это вы эхо $sql вы увидите правильный запрос которым должны работать:

SELECT `entity_id` FROM `test` WHERE (`value` = 'Root') or (`value` = 'Appare') or (`value` = 'hand Bags')` 
0

вам необходимо использовать кавычки для значений

SELECT entity_id FROM test WHERE value IN ('one','two','three') 
+0

, это не сработает. Это сравнение строк –

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