У меня есть база данных SQL Server с таблицей большойproducts
и таблицей category
.
В таблице product
есть столбец category
, который содержит идентификатор соответствующей категории.
Что мне нужно сделать, так это выполнить запрос LIKE как для столбца имени продукта, так и для соответствующего имени категории и вернуть все совпадения.
Какой подход мне следует использовать, учитывая, что я хочу минимизировать нагрузку на сервер?
РЕДАКТИРОВАТЬ, чтобы улучшить этот вопрос:
Результаты:
product1 name->red apple catId->3 (cat_id = 3, "лучшие яблоки")
product2 name->зеленое яблоко catId->5 (cat_id = 5, "хорошие фрукты")
product3 name->зеленый банан catId->8 (cat_id = 8, "яблоки и бананы")
опубликуйте свой текущий подход.
легкий. Просто соедините две таблицы и используйте аналогичную опцию
Если я правильно понимаю, это поможет вам -
create table products(
ID INT PRIMARY KEY,
[Name] NVARCHAR(MAX),
[CatId] INT
)
CREATE TABLE CATEGORIES(
ID INT PRIMARY KEY,
[Name] NVARCHAR(MAX)
)
insert into CATEGORIES values(1, 'Laptop')
insert into CATEGORIES values(2, 'Fruit')
insert into products values (2, 'Washington Apple', 2)
insert into products values (1, 'Apple mac book pro', 1)
select * from products
SELECT p.[Name] as ProductName, c.[Name] as CategoryName FROM products p LEFT JOIN CATEGORIES c ON p.CatId = c.ID Where p.[Name] like '%apple%'
Этот код объединит две таблицы и вернет продукты, название которых соответствует ключевому слову, а также вернет названия их категорий. Вы можете изменить определение продуктов и категорий, чтобы включить другие нужные вам столбцы. Вы также можете добавить ограничение FK на catid.
Это делает то, что вы описали, очень хорошо. Спасибо, но то, чего я пытался достичь, было другим, но я думаю, что это хорошее начало.
Я улучшу свой вопрос
что ты уже испробовал?