Страница 1 из 1
Вопрос по SQL
Добавлено: Пн янв 29, 2007 18:23
MXC
Собсна Туплю второй день
есть таблица:
поля News_Type, News_Headline, News_Text
Нужно софрмировать следующий вопрос: Выбрать все записи которые содержат искомое слово , а также являющиеся News_Type=1
я пишу:
Select * From [News] WHERE News_Type =1 AND News_Headline LIKE '%" + _искомое слово_+ "%' AND News_Text LIKE '%" + _искомое слово_ + "%' ORDER BY News_Date DESC";
и не ищет правильно чтото... виджу я что ошибка тут с AND и OR гдето...
И еще Злобный можещ стукнуть мне в ацку, я твою найти не могу, дело есть)))
Добавлено: Пн янв 29, 2007 21:58
Weekers
Похоже, это MySQL...
Я с ним дела не имел, но вроде должно быть так:
Код: Выделить всё
Select *
From [News]
WHERE News_Type =1 AND ((News_Headline LIKE '%" + _искомое слово_+ "%') OR (News_Text LIKE '%" + _искомое слово_ + "%'))
ORDER BY News_Date DESC";
Иначе (без OR) будут выбираться только те записи, у которых искомое слово в
обоих полях.
Добавлено: Пн янв 29, 2007 22:10
vivk
а зачем столько скобочек?
Select * From [News] WHERE News_Type =1 AND (News_Headline LIKE '%" + _искомое слово_+ "%' OR News_Text LIKE '%" + _искомое слово_ + "%') ORDER BY News_Date DESC";
Добавлено: Вт янв 30, 2007 08:12
MXC
vivk,
Вот... точно... спасибо.. ступил)
Weekers,
Ну MySql это Субд... а меня синтаксис языка волнует)) я использую Sql Server 05
Добавлено: Ср янв 31, 2007 12:00
Sandu
Weekers,
Îòêóäà ó òåáÿ SQL Server 2005.
Äàé è ìíå

Добавлено: Ср янв 31, 2007 12:33
Weekers
vivk,
Дело привычки.
MXC,
Тут случай простой вроде.
Sandu,
К MXC обратись. Я работаю с ACCESS и ORACLE.
Добавлено: Ср янв 31, 2007 18:41
Sandu
MXC,
Çàïèøè ìíå íà ÄÂÄ SQL Server 2005.
Добавлено: Ср янв 31, 2007 20:17
MXC
Sandu,
А ты случайно не из майкрософт? если нет- нивапрос!
Добавлено: Ср янв 31, 2007 21:03
Sandu
MXC,
Íå íå áîéñÿ, êóäà ïðèéòè çà äèñêîì?
Добавлено: Ср янв 31, 2007 21:41
Weekers
[mod="Weekers"]MXC, Sandu, далее - в приват![/mod]
Добавлено: Сб фев 24, 2007 10:41
Злобный
MXC,
В SQL Server есть такая вещь как полнотекстовой поиск. Строится специальный Full-text catalog по набору таблиц-колонок. После этого ищешь предикатом
CONTAINS.
Код: Выделить всё
SELECT * FROM Customers
WHERE CONTAINS ((ContactName, CompanyName), '"Howard" OR "Old"') -- первый параметр - список колонок для поиска, второй - что искать.
На базе Northwind построил Full-text catalog по таблице Customers - колонкам ContactName, CompanyName. Ищутся все записи, у которых в колонках ContactName или CompanyName встречаются слова "Howard" или "Old". Одновременно в одном CONTAINS можно искать по колонкам нескольких таблиц, связав их (таблицы) JOIN-ом, к примеру.
Если стоит Сервер 2005, то полный синтаксис CONTAINS в BOL тут: ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/996c72fc-b1ab-4c96-bd12-946be9c18f84.htm
Полезная вещь, если строится полнотекстовой поиск по всему приложению, который должен затронуть множество таблиц. Кстати, LIKE c левым "%" критически действует на производительность - индексы перестают использоваться, так что аккуратнее с этим.
Добавлено: Сб мар 17, 2007 06:59
vivk
у меня тут родился странный вопрос, можно ли вывести обрезанные данные?
я сам не понял что написал поэтому попробую пример ))
selct kod from ...... выводит например такие данные мф234234423
а мне нужно чтоб выводил только первые 2 символа ->мф, можно как то сделать такой фильтр в самом запросе???
Добавлено: Сб мар 17, 2007 07:09
Злобный
Добавлено: Сб мар 17, 2007 19:47
vivk
спс )