Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Базы данных > SQL
Перезагрузить страницу Как составить SQL запрос
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Anthony68 Anthony68 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2011
По умолчанию Как составить SQL запрос - 05.03.2011, 20:29

Текст книги по предложениям введён в таблицу SQL сервера.
В каждой записи - одно предложение. Вот поля этой таблицы:
ID - номер записи (в таблице VERSES),
CHAPT - номер главы, в которую входит это предложение,
PARAG - номер абзаца, в который входит это предложение,
TEXT - текст предложения.
Если нужно найти в тексте книги все предложения, в которых одновременно присутствует "слово1" и "слово2", то допустим можно применить такое выражение:
SQL Код:
SELECT * FROM VERSES WHERE (TEXT LIKE '% слово1 %') AND (TEXT LIKE '% слово2 %')
И вот вопрос: а как составить такой SQL запрос, который бы позволил находить присутствие 2 слов не в предложениях, а в целых абзацах?
То есть, если "слово1" и "слово2" - одновременно присутствуют в тексте какого-либо целого абзаца, то предложения, содержащие либо "слово1", либо "слово2",
либо оба слова - попали бы в результат.
Ответить с цитированием
  (#2 (permalink)) Старый
umrtj umrtj вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.03.2011
По умолчанию 05.03.2011, 22:30

вместе AND - OR
Ответить с цитированием
  (#3 (permalink)) Старый
Anthony68 Anthony68 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2011
По умолчанию 05.03.2011, 23:04

Цитата:
Сообщение от umrtj Посмотреть сообщение
вместе AND - OR
простите - не понял...
Ответить с цитированием
  (#4 (permalink)) Старый
Philin Philin вне форума
Member
 
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.10.2004
По умолчанию 10.03.2011, 09:31

вместО AND - OR
Ответить с цитированием
  (#5 (permalink)) Старый
Philin Philin вне форума
Member
 
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.10.2004
По умолчанию 10.03.2011, 09:55

Если нужно найти в тексте книги все предложения, в которых одновременно присутствует "слово1" и "слово2", то допустим можно применить такое выражение...
Да. Все верно.

И вот вопрос: а как составить такой SQL запрос, который бы позволил находить присутствие 2 слов не в предложениях, а в целых абзацах?
То есть, если "слово1" и "слово2" - одновременно присутствуют в тексте какого-либо целого абзаца, то предложения, содержащие либо "слово1", либо "слово2", либо оба слова - попали бы в результат.


SQL Код:
CREATE TABLE #VERSES (ID INT, CHAPT INT, PARAG INT, [TEXT] VARCHAR(1000))

INSERT INTO #VERSES (ID, CHAPT, PARAG, [TEXT])
 SELECT 1, 1, 1, ' трам пам пам слово1 .' UNION
 SELECT 1, 1, 1, ' трам пам пам . ' UNION
 SELECT 1, 1, 2, ' Тарирам слово2 пам пам . ' UNION
 SELECT 1, 1, 2, ' Тарирам слово1 пам пам парам. ' UNION
 SELECT 1, 1, 3, ' слово1 , слово2 .'
 
SELECT *
FROM #VERSES
WHERE PARAG IN (
        SELECT PARAG
        FROM #VERSES
        GROUP BY PARAG
        HAVING MAX(CASE WHEN TEXT LIKE '% слово1 %' THEN 1 ELSE 0 END)
            + MAX(CASE WHEN TEXT LIKE '% слово2 %' THEN 1 ELSE 0 END) = 2)
    AND (TEXT LIKE '% слово1 %') OR (TEXT LIKE '% слово2 %')

DROP TABLE #VERSES

Обратите внимание как мне пришлось поступить со знаками препинания в тестовом примере. Для решения этой проблемы настоятельно рекомендую вам смотреть в сторону полнотекстового поиска.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить SQL запрос в Access Trackman SQL 1 11.07.2011 16:05
помогите составить запрос!!! Sheff Prolog 3 12.06.2011 17:33
Нужно составить запрос ) INYH Prolog 3 22.04.2011 18:13
Как составить запрос на три таблицы xxxx SQL 5 15.11.2009 10:37
Как составить запрос Sergjo75 SQL 1 05.09.2008 03:52
Как составить запрос к MySQL Dimas_CooleR SQL 2 13.10.2007 08:24
как составить запрос под Linux zxcvbop SQL 1 28.01.2007 14:51
Как составить запрос BDE SQL FataLL C++ Builder 2 22.05.2006 14:35
Помогите составить SQL-запрос andrey_pst SQL 1 01.02.2006 16:08
Как составить SQL-запрос feedbee SQL 5 25.08.2004 12:49
Помогите составить запрос golds SQL 5 29.04.2004 01:54
Как составить запрос на три строки Anonymous SQL 5 12.05.2003 11:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов