Общие > Базы данных
Нестандартная выборка в базе
Kwazar:
Нужно чтобы в таблице шла выборка по такому принципу. В условии where указанные несколько столбцов.
Пример:
where kolonka1 like \'%$word%\' or kolonka2 like \'%$word%\' or kolonka3 like \'%$word%\'.
Но выборка шла по приоритетному слобцу. Т.е. все смотрится в первом столбце, после окончания смотрится во втором, после окончания в третьем и т.д.
См. иллюстрацию:
http://volgoart.ru/demo.gif
По идее это можно разбить на несколько запросов. Но необходимо выполнить условие, чтобы не выбирались одни и те же строки по несколько раз.
Посему, как я полагаю, все это нужно объединить в один запрос. Но как я это сделать - не знаю.
Буду благодарен, как за краткий ответ, так и за полный и развернутый.
И еще - в догонку. Есть ячейки типа TEXT.
Поиск ведется по ключевому слову (LIKE \'%$word%\'). Нужно что бы при выводе выводились только 250 символов до слова и 250 после (для примера). Как это реализовать средствами SQL?
Заранее благодарен.
Макс:
Kwazar
СУБД указывай в вопросе.
Для mysql:
1. По поводу уникальных строк - SELECT DISTINCT ...
Остальная часть вопроса как-то не по программистски описана ;)
Не понял чем тебе просто OR не подошел (кстати может AND нужен)
2. В mysql есть строковые функции locate() и substring
Будет что-то вроде
SELECT substring(field, locate(\'keyword\',field), 500) ...
Kwazar:
Макс,
Да, БД MySQL.
Логика проста. Ищет данные в одном столбце, потом переходим на 2-й, далее на 3-й и т.д.
Т.е. у меня есть таблица с данными страниц. Нужно сделать релевантный поиск. В первом столбце находится титл страницы, во второй заголовки, в третьей тег Б, в четвортой вся текстовка сайта.
Нужно, что бы вначале шла выборка по титлу, потом по заголовкам, потом по Б, а потом по остальной текстовке.
2. Спасибо, покапаю маны в этом направлении
fidget:
посмотри еще на полнотекстовый поиск, возможно он тебе пригодится.
Kwazar:
fidget
это что за зверь и где он обитает?
Навигация
Перейти к полной версии