求教一实现论坛简单搜索的存储过程~

xiajuner 2003-08-18 10:22:05
用ASP写一个论坛,给论坛做一个简单的帖子搜索,如下:
用户选择按大区搜索或小区搜索,搜索方式3种:1.按作者、2.按标题、3.按内容
后台处理页面在判断按大、小区搜索后接受2个参数:stype(1.useid、2.topic、3.cotent),sfor(搜索内容),2个参数作为参数传入存储过程,本来一条语句可以解决了,但因为我存放帖子的表bbs中的作者只存了userid(int,在另一用户表usr表中有username和userid),而查询输入的是作者名,这样我自己写了一个存储过程,不过感觉写得比不用还麻烦了,麻烦各位指点一下,看有没有简单的写法。
...全文
21 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiajuner 2003-08-19
  • 打赏
  • 举报
回复
up一下了
答了上一个问题,就结贴了
xiajuner 2003-08-19
  • 打赏
  • 举报
回复
基本明白了,还有一个地方:
像select * from bbs where @stype like '%' + @sfor + '%'这样写,就是用参数来代表列(这里用@stype代表topic或content),检查语法无错误,但调试的时候却不起作用,是不是列不能用参数动态表示的还是我的写法有问题?
zarge 2003-08-19
  • 打赏
  • 举报
回复
Create View UserBBS
As
select b.*, u.username from bbs b inner join usr u on b.userid = u.userid
xiajuner 2003-08-19
  • 打赏
  • 举报
回复
to:zarge,我想还是我没有讲清楚,你那样的写法当然是可以的
像我自己写的那个:
create procedure usrgroups
@stype varchar(10)
@sfor varchar(100)
as
if @stype="userid"
select * from bbs b inner join usr u on b.userid = u.userid
where u.username like '%' + @sfor + '%'
else
select * from bbs where @stype like '%' + @sfor + '%'

就是因为bbs表存的是发贴人的userid而不是username(因为当初建库的时候听说用userid做关联效率高些),现在论坛已基本完工,不可能改库了,如果寸的是username的话,根本就不用判断@stype是不是"userid",直接写成select * from bbs where @stype like '%' + @sfor + '%'就可以了,象现在这样麻烦.......

2楼这位能把视图写一下吗,我初学sql server,没有用过视图,谢谢了!
zarge 2003-08-19
  • 打赏
  • 举报
回复
Declare @cmd nvarchar(256)
set @cmd = N'select * from bbs where ' + @stype + ' like ''%' + @sfor + N'%'''
exec sp_executesql @cmd
zarge 2003-08-18
  • 打赏
  • 举报
回复
select b.userid from bbs b inner join usr u on b.userid = u.userid
where u.username like '%' + @sfor + '%'
lzhm 2003-08-18
  • 打赏
  • 举报
回复
把此表和usr表关联,建立一视图把username写入视图就可以了,
xiajuner 2003-08-18
  • 打赏
  • 举报
回复
是我没有讲清楚吗?还是这个只能写得复杂的?

各位把自己想的写出来的看看作个参考可以吗,写出来的都给分的,谢谢了!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧