Страница 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
Злобный

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

SELECT LEFT(kod, 2) AS kod
FROM ...

Добавлено: Сб мар 17, 2007 19:47
vivk
спс )