Запрос SQL Server на несколько таблиц - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть база данных SQL Server с таблицей large products и таблицей category.

В таблице product есть столбец category, содержащийидентификатор соответствующей категории.Что мне нужно сделать, так это выполнить запрос LIKE как для столбца с названием продукта, так и для соответствующего имени категории и вернуть все подходящие варианты.

Какой подход следует использовать, учитывая, что я хочу минимизировать нагрузку на сервер?

РЕДАКТИРОВАТЬ, чтобы улучшить этот вопрос:

Результаты :

product1 name-> red apple catId-> 3 (cat_id = 3, "bestяблоки ")

имя продукта2-> зеленое яблоко catId-> 5 (cat_id = 5," хорошие фрукты ")

название продукта3-> зеленый банан catId-> 8 (cat_id = 8,"яблоки и бананы")

1 Ответ

1 голос
/ 06 апреля 2019

Если я правильно понимаю, это поможет вам -

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.

...