如何用存储过程将两个表中查询到的信息结合起来
有一张‘信息’表如下:
id 标题 关键字 用户名
------------------------------------
1 卖电视了 电视 123@163.com
2 要修电脑 电脑 j@163.com
3 天鹅洗衣机 洗衣机 54@sohu.com
另一张‘关键字’表结构如下:
id 标题 关键字 价格 用户名
--------------------------------------
1 卖电视了 电视 500.00 123@163.com
2 天鹅洗衣机 洗衣机 1000.00 54@sohu.com
几点说明:
1.‘关键字’表中的所有信息都来自‘信息’表
2.‘信息’表中并不是所有的信息都会出现在‘关键字’表中
3.假设这两张表的数据量教大
实现要求:
1.当传入一个词之后,要先搜索‘关键字’表中标题字段和关键字字段里的内容是否模糊匹配传入的值,并且按价格从高到低排列,然后再搜索‘信息’表中标题字段和关键字字段的值是否模糊匹配传入的值,并且按ID号降序排列。
最后输出以上查找到的所有数据,并且能够分页显示。
2.用SQL SERVER 2000的存储过程实现。
望高手指点。
------解决方案--------------------数据量大时,可以考虑建全文检索
select id, 标题 , 关键字 , 价格 , 用户名,row=1 from 关键字 where patindex('%电视%',标题 )>0
union all
select id, 标题 , 关键字 , 价格=0 , 用户名,row=2 from 信息 where patindex('%电视%',标题 )>0
order by row asc,价格 desc,ID asc
------解决方案--------------------select * from 关键字表 where 关键字 = @input
union all
select id,标题,关键字,价格=0,用户名 from 信息表 where 关键字 = @input
------解决方案--------------------select * from 关键字 where (标题 Like '%'+@var+'%' or 关键字 like '%'+@var+'%') order by 价格
union all
select id,标题,关键字,价格=0,用户名 from 信息表 where (标题 Like '%'+@var+'%' or 关键字 like '%'+@var+'%') order by id
------解决方案--------------------SQL code
select * from 所有详细产品
where id in
(select 关键字.id from 信息 left join 关键字 on 信息.id= 关键字.id)
------解决方案--------------------
select * from 所有详细产品 where id in
(
select id from 关键字表 where 关键字 = @input
union all
select id from 信息表 where 关键字 = @input
)