$searchArr = explode(" ", "МОСКВА ЦИФРОВОЙ");
$select= " SELECT * FROM `itbrand_templ_10` ";
if($search){
$select.= " WHERE ";
for( $i= 0, $col= count($searchArr); $i<$col; $i++ )
{
if($i>0) $select.=" or ";
$select.= " `data37` LIKE '%$searchArr[$i]%' ";
$select.= " or `data39` LIKE '%$searchArr[$i]%' ";
$select.= " or `data40` LIKE '%$searchArr[$i]%' ";
$select.= " or `data41` LIKE '%$searchArr[$i]%' ";
}
}
$select.= " ORDER BY `data38` ";
как видно мы находим все совпадения в полях, и сортируем по data38.
выводятся совпадения как по одному слову, так и по 2м, но все по порядку, как они были найдены.
Подскажите что нужно сделать чтобы наиболее точнй запрос выводился первым.
Под наиболее точным понимается совпадение по 2м словам.
Спустя 1 час, 10 минут, 48 секунд (30.11.2011 - 15:16) SlavaFr написал(а):
order by (if(`data39` LIKE '%$searchArr[$i]%',1,0) + if(`data40` LIKE '%$searchArr[$i]%',1,0) + ..........)
Спустя 18 минут, 16 секунд (30.11.2011 - 15:34) Placido написал(а):
Так:
SELECT * FROM `itbrand_templ_10`а если нужно, чтобы результаты, найденные по одному полю, сортировались по `data38`, то так:
WHERE `data37` LIKE '%$searchArr[$i]%' and `data39` LIKE '%$searchArr[$i]%'
UNION
SELECT * FROM `itbrand_templ_10`
WHERE `data37` LIKE '%$searchArr[$i]%' or `data39` LIKE '%$searchArr[$i]%';
SELECT * FROM `itbrand_templ_10`
WHERE `data37` LIKE '%$searchArr[$i]%' and `data39` LIKE '%$searchArr[$i]%'
UNION
SELECT * FROM (SELECT * FROM `itbrand_templ_10`
WHERE `data37` LIKE '%$searchArr[$i]%' or `data39` LIKE '%$searchArr[$i]%'
ORDER BY `data38`) `t`,
Спустя 13 минут, 41 секунда (30.11.2011 - 15:48) kuzroman написал(а):
Всем спасибо, пока сделал, два запроса, сейчас проверим остальные.
Спустя 16 минут, 12 секунд (30.11.2011 - 16:04) kuzroman написал(а):
Цитата (SlavaFr @ 30.11.2011 - 12:16) |
order by (if(`data39` LIKE '%$searchArr[$i]%',1,0) + if(`data40` LIKE '%$searchArr[$i]%',1,0) + ..........) |
А немоглибы описать что делает ваша сортировка?
У меня она конечно что то выводит, но далеко не то что нужно)
_____________
kuzroman@list.ru