Forum Webscript.Ru
		Общие => Базы данных => Тема начата: Kwazar от 14 Апреля 2003, 22:28:40
		
			
			- 
				Нужно чтобы в таблице шла выборка по такому принципу. В условии 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) ...
- 
				Макс,
 Да, БД MySQL.
 Логика проста. Ищет данные в одном столбце, потом переходим на 2-й, далее на 3-й и т.д.
 Т.е. у меня есть таблица с данными страниц. Нужно сделать релевантный поиск. В первом столбце находится титл страницы, во второй заголовки, в третьей тег Б, в четвортой вся текстовка сайта.
 Нужно, что бы вначале шла выборка по титлу, потом по заголовкам, потом по Б, а потом по остальной текстовке.
 2. Спасибо, покапаю маны в этом направлении
- 
				посмотри еще на полнотекстовый поиск, возможно он тебе пригодится.
			
- 
				fidget 
 это что за зверь и где он обитает?
- 
				http://www.mysql.com/doc/en/Fulltext_Search.html
 
 если учесть что в исходных твоих запросах
 
 :
 Пример:
 where kolonka1 like \'%$word%\' or kolonka2 like \'%$word%\' or kolonka3 like \'%$word%\'.
 
 оптимизацией и не будет пахнуть, то возможно полнотекстовый поиск тебе больше пригодится.
- 
				
 where kolonka1 like \'%$word%\' or kolonka2 like \'%$word%\' or kolonka3 like \'%$word%\'.
 
 
 а так?
 
 where (kolonka1 LIKE \'%$word%\' or kolonka2 like \'%$word%\' or kolonka3 like \'%$word%\')
 
 пытался?
 или это глупо?..
- 
				> пытался?
 
 а чем твой запрос отличается принципиально от того , что он писал? ;)
- 
				не поверишь... скобками...
			
- 
				я... 
 эти скобки сделают выборку c портировкой релевантности по столбцам, а не по строкам?