Если условие перестановки в SQL
Я хочу, чтобы выбрать те записи, которые содержит только '1' и '2' и '1,2' и '2,1'
Если условие перестановки в SQL
Я хочу, чтобы выбрать те записи, которые содержит только '1' и '2' и '1,2' и '2,1'
хорошо ответ о создании новой таблицы из 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)
Наконец я использовал этот код, чтобы сделать запрос. И я решил сохранить данные в поле изображения в формате заказа.
<?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.")";
?>
Попробуйте это: 'где изображение в ("1", "2", "1,2", "2,1")' – Veniamin
Но если я хочу, чтобы выбрать, которые содержат «1,2 , 3 ", тогда я должен написать их перестановку. Поэтому я хочу сделать его динамичным для всех условий. – Sid
С несортированным значением поля, разделенным запятой, точное совпадение всех комбинаций, как предлагает Вениамин, - единственный способ использовать индексы. Я бы рекомендовал вам либо нормализовать таблицу, либо отсортировать свои номера при обновлении/вставке, чтобы получить точный поиск _one_ для поиска. –