[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка данных
Гость_Александр
Таблица - 42 000 слов от 2 до 6 символов поля wodr и size - кол-во символов в слове

ПХП генерирует массивы ~ 10 - 1000 элементов :

$arr[0] = array('_а','_т',....'я_');
....
$arr[5] = array('_ааава','_ааавб',...'пк_бго',.....'яяасс_');

из базы нужно выбрать все слова которые соответствуют "шаблонам"

код для $arr[5]:


$inq = "SELECT word FROM words WHERE size=6 AND (";

$count = count ($arr[5]);

for ($i=0;$i<$count;$i++) $inq_arr[$i] = " word LIKE '{$arr[5][$i]}' ";

mysql_query($inq.implode('OR',$inq_arr).')');


В итоге получается огромный запрос "SELECT word FROM words WHERE size=6 AND (word LIKE '_ааава' OR ... OR word LIKE 'яяасс_');"

Возможно ли как-то по-другому реализовать эту задачу ?

Заранее всем спасибо rolleyes.gif



Спустя 36 минут, 21 секунда (25.01.2010 - 17:19) Gabriel написал(а):
Гость_Александр
mysql_query("SELECT word FROM words WHERE size=6 AND word IN('".implode(','$arr[5])."')");

может так можно?

Спустя 45 минут, 23 секунды (25.01.2010 - 18:05) Guest написал(а):
Gabriel, спасибо за подсказку запрос выполняется раза в 4 быстрее biggrin.gif , только пришлось в цикле подставлять все буквы вместо _ , IN с масками не работает, короче было 1000 шаблонов, стало - 33000 , может есть еще какие варианты?

Спустя 8 минут, 12 секунд (25.01.2010 - 18:13) Gabriel написал(а):
не совсем доганяю объясни на кошках, что в базе и что нужно выдернуть.
ведь теоретически если у тебя в поле лежит _абабагаламага и ты в запрос подставляешь _абабагамага то должно выдернуть. Или у _ есть не просто символом?

Спустя 7 минут, 1 секунда (25.01.2010 - 18:20) Guest написал(а):
в базе слова (существительные), в шаблонах _ означает какую-нибуть букву алфавита, подставив которую из _абабагаламага получится слово , которое есть в базе, таким образом при использовании LIKE mysql возвращает все варианты в которых есть "абабагаламага" и еще один символ в начале слова, при использовании IN вместо _ нужно самому подставлять все возможные варианты
Быстрый ответ:

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