sql server复杂查询 - 获取数据并在多个表上搜索

时间:2009-12-01 13:06:31

标签: sql sql-server-2005

我有两张表如下:

product category(t1):
id
name
product master(t2):
id 
name
category

现在我有以下查询仅在一个查询中获取产品和相关的类别名称:

select 
  *,
  (select name from t1 where t1.id=t2.category) as 'category' 
from 
  t2

这是完美的。现在我需要做的是,对结果集执行过滤操作。请考虑以下内容:

select 
  *,
  (select name from t1 where t1.id=t2.category) as 'category' 
from 
  t2 
where 
  t2.name like '%keyword%' or 'category' like '%keyword%'

现在只有当我输入名称列上的关键字但未根据类别名称执行搜索时,此功能才有效。我有什么想法吗?

BTW:我正在使用ASP.NET 3.5和SQL Server 2005 Express Edition。

感谢您的时间和支持。非常感谢提前。

2 个答案:

答案 0 :(得分:4)

JOINs是你的朋友:)

SELECT t2.*, t1.name
FROM t2
    JOIN t1 ON t2.category = t1.id
WHERE t2.name LIKE '%keyword%'
     OR t1.name LIKE '%keyword%'

答案 1 :(得分:0)

你可以试试这个:

SELECT t2.*, t1.name
FROM t2,
     t1 ON t2.category = t1.id
WHERE t2.name LIKE '%keyword%'
     OR t1.name LIKE '%keyword%'