Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Containstable / 7 сообщений из 7, страница 1 из 1
20.07.2019, 22:09
    #39839625
Sion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
Добрый вечер, в поиск падает фраза "Наушники полноразмерные Sony"
помогите развернуть запрос в один JOIN чтобы не прибегать к нагромождению JOIN для каждого слова


select * from
(SELECT [ID]
,[structura_id]
,[HID]
,[short_name]
,[full_name]
,ISNULL(f1.[RANK],0) + ISNULL(f2.[RANK],0) + ISNULL(f3.[RANK],0) as r
FROM [MONITORING].[dbo].[1CSTRUCTURA_PATH] s
LEFT JOIN CONTAINSTABLE ([1CSTRUCTURA_PATH],[short_name],
'ISABOUT("Наушник*" weight(1.0))') f1
on s.[ID] = f1.[KEY]
LEFT JOIN CONTAINSTABLE ([1CSTRUCTURA_PATH],[short_name],
'ISABOUT("полноразмерн*" weight(0.8))') f2
on s.[ID] = f2.[KEY]
LEFT JOIN CONTAINSTABLE ([1CSTRUCTURA_PATH],[short_name],
'ISABOUT("Sony*" weight(0.6))') f3
on s.[ID] = f3.[KEY]
) a
order by a.r desc
...
Рейтинг: 0 / 0
20.07.2019, 22:54
    #39839627
Sion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
выход найден
ISABOUT("Наушник*" weight(1.0), "полноразмерн*" weight(0.8) , "Sony*" weight(0.6))
...
Рейтинг: 0 / 0
21.07.2019, 14:10
    #39839676
Sion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
И снова добрый вечер.))

Возвращаюсь к насущному зверю CONTAINS.

Есть у меня таблица товаров и таблица каталогов.
Задача для новых товаров найти каталоги по наилучшему схождению.

Вот думаю я скрещю таблицы FULL JOIN и скину в @SearchWord все названия товаров.

нужно что то в таком стиле

Код: sql
1.
2.
3.
4.
select * from Product p
full join Catalog c
inner join Containstable(Catalog, catalog_name, product_name) t
on c.id = t.[KEY]



Но не тут то было поперхнулся на product_name, объясните как всетаки едят этого зверя?
...
Рейтинг: 0 / 0
21.07.2019, 15:57
    #39839690
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
Sion,

Для реализации желаемого придется containstable завернуть в multi-statement TVF
...
Рейтинг: 0 / 0
21.07.2019, 18:55
    #39839700
Sion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
invm, не выходит

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION [dbo].[Sample] (@text nvarchar(100))
RETURNS TABLE AS  
RETURN
(
		SELECT TOP 1 * FROM CONTAINSTABLE ([1CSTRUCTURA_PATH], [short_name], @text)
		      
)

SELECT *  FROM [MONITORING].[dbo].[1CSTRUCTURA] s
cross apply [MONITORING].[dbo].[Sample](s.short_name) q


Код: sql
1.
Встроенная функция "MONITORING.dbo.Sample" не может принимать взаимосвязанные параметры или вложенные запросы, так как использует полнотекстовый оператор.
...
Рейтинг: 0 / 0
21.07.2019, 19:00
    #39839703
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
Sion,

Писал жеinvm multi-statement TVF
...
Рейтинг: 0 / 0
21.07.2019, 19:37
    #39839710
Sion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Containstable
invm,

спасибо за помощь, вопрос решен.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Containstable / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]