Помогите с запросом

flash-vkv

Новичок
Помогите с запросом

Помогите с запросом
можно ли какнибуть обойтись одним запросом
есть искомое слово например Сократ
в БД есть только Сорокин (и тд по возростаюшей)
те у этих двух записий обшая часть "Со" , к примеру если в БД был бы Соколов то обшая была бы "Сок"

та вот делаю запрос name>= "Cократ"
в БД есть
Санников
Соколов
Сорокин

естественно результатом будет "Сорокин"
а нужно "Соколов" те какбы поис произвести по такому условию name>="Сок" , те по обшей ,наибольшей, части

делаю пока несколькими запросами сперва ишу name="С" потом name="Со" потом name="Сок" и как только нет записи то значит
предедущая искомая "обшая" часть а потом подставляю искомую часть в основной запрос name>="Сок"
 

flash-vkv

Новичок
вы не поняли меня клюць лоя поиска "Cократ" а так как в БД нет такой записи должно выдать "Соколов" а не в случии с условием name>= "Cократ" => "Сорокин"
like "Cократ%" вобше нечего не даст
 

Xupypr

Новичок
По моему 1м запросом не обойтись.. попробуй зациклить запрос, постепенно к like-у прибовляя по букве от заданного слова.
 

chira

Новичок
flash-vkv

select для размышления:
Код:
SELECT n.*
  , ( (name LIKE 'С%')
   + (name LIKE 'Со%')
   + (name LIKE 'Сок%')
   + (name LIKE 'Сокр%')
   + (name LIKE 'Сокра%')
   + (name LIKE 'Сократ%')
) ord
FROM ...
WHERE name LIKE "С%" 
ORDER BY ord DESC
 

flash-vkv

Новичок
_RVK_
неужели некогда не делал посимвольный поиск записи в БД
те юзер вводит в поле поиска вводит искомое слово а прога по ходу ввода слова ишет и сразу выводит результат
так вот если поставить просто условие >= то пока введено
С Со Сок то все нормально выводит Соколов но как только будет слово "Сокя" то выведит "Сорокин" так как
условие "Соколов" >= "Сокя" не верное
а ведь надо чтоб вывело Соколов ,так удобнее вести поиск для юзера,

сейчас я делаю как говарит Xupypr, но мне это не нравится зачем лишнии запросы к примеру когда слово из 10 букв , а ведь результат должен быть моментальным и так на сетевые издержки много времени уходит


chira
я тебя не понял это что за чудо? Попробовал я твой запрос ,я и до того как его запустил нече не понял.
 

chira

Новичок
flash-vkv

разжёвываем ...
выражения типа (name LIKE 'С%') возвращают значения
1 - если условие истинно
0 - если условие ложно
чем больше у тебя совпадёт условий, тем больше будет значение поля ord
отсортировав по полю ord в убывающем порядке получим наиболее подходящие строки в начале выборки.
это похоже на предложение Xupypr, но другая реализация

ты скажи, что делать если ни одного слова на букву "C" в таблице нету.
 
Сверху