把此表和usr表关联,建立一视图把username写入视图就可以了,

解决方案 »

  1.   

    select b.userid from bbs b inner join usr u on b.userid = u.userid
    where u.username like '%' + @sfor + '%'
      

  2.   

    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,没有用过视图,谢谢了!
      

  3.   

    Create View UserBBS
    As
    select b.*, u.username from bbs b inner join usr u on b.userid = u.userid
      

  4.   

    基本明白了,还有一个地方:
    像select * from bbs where @stype like '%' + @sfor + '%'这样写,就是用参数来代表列(这里用@stype代表topic或content),检查语法无错误,但调试的时候却不起作用,是不是列不能用参数动态表示的还是我的写法有问题?
      

  5.   

    Declare @cmd nvarchar(256)
    set @cmd = N'select * from bbs where ' + @stype + ' like ''%' + @sfor + N'%'''
    exec sp_executesql @cmd