Вопрос по SQL

Модератор: Злобный

Ответить
Аватара пользователя
MXC
Продвинутый
Сообщения: 267
Зарегистрирован: Чт сен 18, 2003 03:32
Откуда: Кишингтаун
Контактная информация:

Вопрос по SQL

Сообщение 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 гдето...

И еще Злобный можещ стукнуть мне в ацку, я твою найти не могу, дело есть)))
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

Похоже, это MySQL...
Я с ним дела не имел, но вроде должно быть так:

Код: Выделить всё

Select * 
From [News] 
WHERE News_Type =1 AND ((News_Headline LIKE '%" + _искомое слово_+ "%') OR (News_Text LIKE '%" + _искомое слово_ + "%')) 
ORDER BY News_Date DESC";
Иначе (без OR) будут выбираться только те записи, у которых искомое слово в обоих полях.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

а зачем столько скобочек?
Select * From [News] WHERE News_Type =1 AND (News_Headline LIKE '%" + _искомое слово_+ "%' OR News_Text LIKE '%" + _искомое слово_ + "%') ORDER BY News_Date DESC";
Аватара пользователя
MXC
Продвинутый
Сообщения: 267
Зарегистрирован: Чт сен 18, 2003 03:32
Откуда: Кишингтаун
Контактная информация:

Сообщение MXC »

vivk,
Вот... точно... спасибо.. ступил)

Weekers,
Ну MySql это Субд... а меня синтаксис языка волнует)) я использую Sql Server 05
Sandu
Юзер
Сообщения: 82
Зарегистрирован: Пт авг 13, 2004 02:31

Сообщение Sandu »

Weekers,
Îòêóäà ó òåáÿ SQL Server 2005.
Äàé è ìíå :)
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

vivk,
Дело привычки.

MXC,
Тут случай простой вроде.

Sandu,
К MXC обратись. Я работаю с ACCESS и ORACLE.
Sandu
Юзер
Сообщения: 82
Зарегистрирован: Пт авг 13, 2004 02:31

Сообщение Sandu »

MXC,
Çàïèøè ìíå íà ÄÂÄ SQL Server 2005.
Аватара пользователя
MXC
Продвинутый
Сообщения: 267
Зарегистрирован: Чт сен 18, 2003 03:32
Откуда: Кишингтаун
Контактная информация:

Сообщение MXC »

Sandu,
А ты случайно не из майкрософт? если нет- нивапрос!
Sandu
Юзер
Сообщения: 82
Зарегистрирован: Пт авг 13, 2004 02:31

Сообщение Sandu »

MXC,
Íå íå áîéñÿ, êóäà ïðèéòè çà äèñêîì?
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

[mod="Weekers"]MXC, Sandu, далее - в приват![/mod]
Аватара пользователя
Злобный
Завсегдатай
Сообщения: 2716
Зарегистрирован: Сб июн 18, 2005 21:05
Контактная информация:

Сообщение Злобный »

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 левым "%" критически действует на производительность - индексы перестают использоваться, так что аккуратнее с этим.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

у меня тут родился странный вопрос, можно ли вывести обрезанные данные?
я сам не понял что написал поэтому попробую пример ))

selct kod from ...... выводит например такие данные мф234234423
а мне нужно чтоб выводил только первые 2 символа ->мф, можно как то сделать такой фильтр в самом запросе???
Аватара пользователя
Злобный
Завсегдатай
Сообщения: 2716
Зарегистрирован: Сб июн 18, 2005 21:05
Контактная информация:

Сообщение Злобный »

Код: Выделить всё

SELECT LEFT(kod, 2) AS kod
FROM ...
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

спс )
Ответить

Вернуться в «Программирование»