[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск наиболее "нужной" строки
palladium
Народ, подскажите как написать скрипт для поиска "наилучшей строки" в базе данных. Например есть строки:
id who
1 РВТУРФУ
2 ВОЫТУ
3 РВ
4 РВТУРФУЛ

Ищем значение РВТУРФУЛРЫТЦ
Надо просканить таблицу и найти наиболее совпадающее значение и вернуть его id для дальнейшего использования. smile.gif
Valick
полнотекстовый поиск, релевантность, гугл

_____________
Стимулятор ~yoomoney - 41001303250491
palladium
% - штука известная.
Можно ссылку на статью какую-нить полезную? В Интернете информации куча, но не могу найти то что надо. Вообще будет очень похоже на телефонную книгу. поиск номера и вывод владельца из другой таблицы.
palladium
Может кто поможет?
Денежку на телефон кину! smile.gif
palladium
Народ, вот конкретней задача:

Есть таблица из 4 столбцов,

База "basa1" таблица "main"

id who where number
0 stat112 Russia 1
1 stat214 USA 2
2 stat1123 Norway 3
3 stat11 Finland 4
4 stat21 Russia 5

в другой таблице "basa1" "main2"

id number balance
0 1 23$
1 2 21$
2 3 (1,5$)
3 4 14$
4 5 0,3$

Надо сделать такой запрос: stat112412 и в этой таблице найти наиболее совпадающий: stat112 в первой таблице, далее в соответствии с ассоциацией в столбце number во второй таблице вывести значение balance. таблица на выводе такая:

who where balance
stat112 Russia 23$

Заранее благодарю кто поможет!
DedMorozzz
Ну есть же гугл. Сперва учимся им пользоваться, далее будет проще разбираться с другими задачами.
http://stackoverflow.com/questions/1368716...matching-string

SELECT DISTINCT name
FROM myTable
WHERE name LIKE CASE
WHEN NOT EXISTS
(SELECT * FROM myTable WHERE name LIKE 'S%') THEN '%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'St%') THEN 'S%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'Sta%') THEN 'St%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'Stac%') THEN 'Sta%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'Stack%') THEN 'Stac%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackO%') THEN 'Stack%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOv%') THEN 'StackO%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOve%') THEN 'StackOv%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOver%') THEN 'StackOve%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOverf%') THEN 'StackOver%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOverfl%') THEN 'StackOverf%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOverflo%') THEN 'StackOverfl%'
WHEN NOT EXISTS(SELECT * FROM myTable WHERE name LIKE 'StackOverflow%') THEN 'StackOverflo%'
ELSE 'StackOverflow%'
END


А выборка через джоины делается

Цитата
Денежку на телефон кину!

Это по желанию. Номер вебмани держи - R398633093363

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

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