在多个表上的SQL Server查询

时间:2019-04-06 08:49:51

标签: sql-server database sql-like

我有一个带有 large products表和category表的SQL Server数据库。

product表中,有一个category列,其中包含相应类别的ID。 我要做的是在产品名称列和相应的类别名称上执行一次LIKE查询,并返回所有匹配项。

考虑要最小化服务器上​​的负载,我应该使用哪种方法?

编辑以改善此问题:

结果

product1名称->红苹果catId-> 3(cat_id = 3,“最好的苹果”)

product2名称->青苹果catId-> 5(cat_id = 5,“好水果”)

product3名称->绿色香蕉catId-> 8(cat_id = 8,“苹果和香蕉”)

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这将为您提供帮助-

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%'

此代码将连接两个表,并返回名称与关键字匹配的产品,并返回其类别名称。您可以修改产品和类别的定义以包括所需的其他列。您可能还想在catid上添加FK约束。