[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Небольшая задачка
AiSee
Исходные данные:
Таблица с 2-мя полями - ID и OBJ:
ID - целочисленное значение;
OBJ - список объектов (строка, содержащая имена, через запятую);
Запрос:
ARR - массив, содержащий список объектов (строка, содержащая имена, через запятую);
Нужно получить:
ID строк, поля OBJ которых содержат только те объекты, что есть в ARR;
ID строк, поля OBJ которых содержат объекты из ARR и ещё X объектов, не лежащих в ARR.

Вопрос, как оптимально решить эту задачу?



Спустя 20 дней, 6 часов, 59 минут, 4 секунды (5.11.2007 - 21:39) maximus написал(а):
Насчет оптиальности не знаю, но вполне можно попробовать использую LIKE %...%. Алгоритм:
ты обходишь массив, каждое значение затачивая в (OBJ LIKE "%'.$value.'%") приблизительный код:
Код

...
$ARR=explode(',',$ARR);
foreach($ARR as $k=>$value){$ARR[$k]='(OBJ LIKE "%'.$value.'%")';} // здесь можно эксперементировать с другими функциями обхода
$ARR=implode('AND',$ARR);
$query='SELECT ID FROM table WHERE '.$ARR;
...


Попробуй такой вариант

Спустя 4 часа, 7 минут, 54 секунды (6.11.2007 - 01:47) Ghost написал(а):
maximus - в корне неправильно.

1. select id from ... where obj in ('...', '...', '...', .....)
2. select id from ... where obj in ('...', '...', '...', .....) union select * from (select id from ... where obj not in ('...', '...', '...', .....) limit X) as gen
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.