Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск ключевых слов в описаниях  [new]
zebn
Member

Откуда:
Сообщений: 8
Здравствуйте, есть две таблицы, в первой ключевые слова(keywords), вторая (offer) - база книг с описаниями.
Передо мной стоит задача посчитать для каждого ключевого слова сколько раз оно встречается в описаниях.

для одного это сделать очень просто

SELECT COUNT(*)  FROM offer WHERE description LIKE '% '+@vSlovo+'[ ,.;:]%';


а как сделать если слов у меня несколько тысяч?

я пробовал так

 BEGIN
   DECLARE @j INT;
  DECLARE @f INT;
   DECLARE @vSlovo nvarchar(255);
   SET @j = 1;

WHILE @j <> 2000
BEGIN

SET @vSlovo = (SELECT slovo FROM dbo.keywords where ID=@j);

SELECT COUNT(*)  FROM dbo.offer WHERE description LIKE '% '+@vSlovo+'[ ,.;:]%';
 
 SET @j=@j+1;
 END
 END


но я получаю 2000 таблиц с результатами, как мне сделать чтобы получалась удобоваримая вещь?

в идеале:

слово|сколько раз оно встречается
10 янв 13, 18:49    [13749428]     Ответить | Цитировать Сообщить модератору
 Re: Поиск ключевых слов в описаниях  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
zebn,

Откройте для себя GROUP BY.
10 янв 13, 18:54    [13749453]     Ответить | Цитировать Сообщить модератору
 Re: Поиск ключевых слов в описаниях  [new]
zebn
Member

Откуда:
Сообщений: 8
Ennor Tiegael,

я чтото не могу разобраться как его использовать. Он объединяет эти 2000 таблиц? а по какому признаку?
10 янв 13, 18:59    [13749475]     Ответить | Цитировать Сообщить модератору
 Re: Поиск ключевых слов в описаниях  [new]
Strangers
Member [заблокирован]

Откуда: Україна
Сообщений: 2613
declare @keywords table (sn varchar(200));
declare @offer table (sn varchar(200));

insert into @keywords
values
		('кот'),
		('слон'),
		('собака')

insert into @offer 
values
		('жили-были дед и баба. и был у них кот'),
		('жили-были дед и слон. и был у них кот'),
		('жили-были собака и слон. и был у них кото-слон')

		
SELECT sn,
		(SELECT COUNT(sn)
		FROM @offer
		WHERE sn LIKE '%[ ,.;:]'+t.sn+'[ ,.;:]%' or sn LIKE t.sn+'[ ,.;:]%' or sn LIKE '%[ ,.;:]' + t.sn)
FROM @keywords t
10 янв 13, 19:01    [13749482]     Ответить | Цитировать Сообщить модератору
 Re: Поиск ключевых слов в описаниях  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
zebn,

По признаку совпадения, конечно же.
SELECT k.Slovo, COUNT(*) as [Cnt]
FROM dbo.keywords k
  left join dbo.offer f on f.description LIKE '% '+k.Slovo+'[ ,.;:]%'
where k.id < 2000
group by k.Slovo;

Заодно и про джойн узнаете...
10 янв 13, 19:03    [13749488]     Ответить | Цитировать Сообщить модератору
 Re: Поиск ключевых слов в описаниях  [new]
zebn
Member

Откуда:
Сообщений: 8
Ennor Tiegael, Strangers

спасибо огромное за помощь! Буду дальше изучать.
10 янв 13, 19:10    [13749520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить