2016-03-29 4 views
0

enter image description hereЕсли условие перестановки в SQL

Я хочу, чтобы выбрать те записи, которые содержит только '1' и '2' и '1,2' и '2,1'

+0

Попробуйте это: 'где изображение в ("1", "2", "1,2", "2,1")' – Veniamin

+0

Но если я хочу, чтобы выбрать, которые содержат «1,2 , 3 ", тогда я должен написать их перестановку. Поэтому я хочу сделать его динамичным для всех условий. – Sid

+1

С несортированным значением поля, разделенным запятой, точное совпадение всех комбинаций, как предлагает Вениамин, - единственный способ использовать индексы. Я бы рекомендовал вам либо нормализовать таблицу, либо отсортировать свои номера при обновлении/вставке, чтобы получить точный поиск _one_ для поиска. –

ответ

0

хорошо ответ о создании новой таблицы из jarlh

Вы можете сделать новую таблицу jobs_images с колоннами:

id - primary 
id_job 
id_image 

и выбрать с помощью присоединиться к exmple:

SELECT * FROM `jobs` LEFT JOIN `jobs_images` ON (`jobs_images`.`id_job`=`jobs`.`id`) 
WHERE `jobs_images`.`id_image` IN (1,2,3) 
0

Наконец я использовал этот код, чтобы сделать запрос. И я решил сохранить данные в поле изображения в формате заказа.

<?php 
    echo "<pre>"; 
    $str = "1,2,3"; 
    function getCombinations($array) { 
     //initalize array 
     $results = [[]]; 
     //get all combinations 
     foreach ($array as $k => $element) { 
      foreach ($results as $combination) 
       $results[] = $combination + [$k => $element]; 
     } 
     //return filtered array 
     return array_values(array_filter($results)); 
    } 
    $arr = getCombinations(explode(",", $str)); 
    $lastElement = end($arr); 
    foreach($arr as $v){ 
     $sep=","; 
     if($lastElement == $v){ 
     $sep=''; 
     } 
      $condition .= "'".implode(",", $v)."'".$sep; 
    } 
    echo $qry = "select * from job_detail where image in (".$condition.")"; 
?> 
Смежные вопросы