当前位置: 代码迷 >> Sql Server >> 怎么用存储过程将两个表中查询到的信息结合起来
  详细解决方案

怎么用存储过程将两个表中查询到的信息结合起来

热度:55   发布时间:2016-04-27 15:31:09.0
如何用存储过程将两个表中查询到的信息结合起来
有一张‘信息’表如下:

id 标题 关键字 用户名
------------------------------------
1 卖电视了 电视 [email protected]
2 要修电脑 电脑 [email protected]
3 天鹅洗衣机 洗衣机 [email protected]


另一张‘关键字’表结构如下:
id 标题 关键字 价格 用户名
--------------------------------------
1 卖电视了 电视 500.00 [email protected]
2 天鹅洗衣机 洗衣机 1000.00 [email protected]

几点说明:
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 [email protected]+'%' or 关键字 like [email protected]+'%') order by 价格
union all
select id,标题,关键字,价格=0,用户名 from 信息表 where (标题 Like [email protected]+'%' or 关键字 like [email protected]+'%') 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 
)
  相关解决方案