数据库两个表:
moongoods表中字段有goodsid,goodsname,goodsspell,goodsgg 
moonjxcmx表中字段有buyersId,buyersName,goodsId,goodsName,goodsKc  ...
我想查询出
select * from moongoods where goodsspell like '%"+Session["serchPro"]+"%'得出来的记录,从moonjxcmx找出goodsId和moongoods表中goodsid相同的记录,把goodsKc显示在一列
比如说:
moongoods表中的记录有:
goodsid         goodsname      goodsspell 
wjl/gg/001       大开心果     dkxg
wjl/gg/002       小开心果     xkxg
...moonjxcmx表中的记录有:
buyersId   buyersName   goodsId       goodsName    goddsspell  goodsKC     onlyId
1      客户1    wjl/gg/001     大开心果    dkxg       10       20081230
1           客户1    wjl/gg/002      小开心果        xkxg        5       20081230
2           客户2    wjl/gg/001      大开心果        dkxg        1       20081230我想得到的记录是:
客户1的onlyId like 20081230的如下记录
 goodsid          goodsname     goodsspell      goodKc
wjl/gg/001       大开心果     dkxg            10  
wjl/gg/002       小开心果     xkxg             5
moongoods表有的记录在moonjxcmx表中找不到匹配的,goodKc显示为0

解决方案 »

  1.   

    没看懂你的意思,是不是合并列?/*
    标题:按某字段合并字符串之一(简单合并)
    作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
    时间:2008-11-06
    地点:广东深圳描述:将如下形式的数据按id字段合并value字段。
    id    value
    ----- ------
    1     aa
    1     bb
    2     aaa
    2     bbb
    2     ccc
    需要得到结果:
    id     value
    ------ -----------
    1      aa,bb
    2      aaa,bbb,ccc
    即:group by id, 求 value 的和(字符串相加)
    */
    --1、sql2000中只能用自定义的函数解决
    create table tb(id int, value varchar(10))
    insert into tb values(1, 'aa')
    insert into tb values(1, 'bb')
    insert into tb values(2, 'aaa')
    insert into tb values(2, 'bbb')
    insert into tb values(2, 'ccc')
    gocreate function dbo.f_str(@id int) returns varchar(100)
    as
    begin
        declare @str varchar(1000)
        set @str = ''
        select @str = @str + ',' + cast(value as varchar) from tb where id = @id
        set @str = right(@str , len(@str) - 1)
        return @str
    end
    go--调用函数
    select id , value = dbo.f_str(id) from tb group by iddrop function dbo.f_str
    drop table tb
    --2、sql2005中的方法
    create table tb(id int, value varchar(10))
    insert into tb values(1, 'aa')
    insert into tb values(1, 'bb')
    insert into tb values(2, 'aaa')
    insert into tb values(2, 'bbb')
    insert into tb values(2, 'ccc')
    goselect id, [value] = stuff((select ',' + [value] from tb t where id = tb.id for xml path('')) , 1 , 1 , '')
    from tb
    group by iddrop table tb
    --3、使用游标合并数据
    create table tb(id int, value varchar(10))
    insert into tb values(1, 'aa')
    insert into tb values(1, 'bb')
    insert into tb values(2, 'aaa')
    insert into tb values(2, 'bbb')
    insert into tb values(2, 'ccc')
    go
    declare @t table(id int,value varchar(100))--定义结果集表变量
    --定义游标并进行合并处理
    declare my_cursor cursor local for
    select id , value from tb
    declare @id_old int , @id int , @value varchar(10) , @s varchar(100)
    open my_cursor
    fetch my_cursor into @id , @value
    select @id_old = @id , @s=''
    while @@FETCH_STATUS = 0
    begin
        if @id = @id_old
           select @s = @s + ',' + cast(@value as varchar)
        else
          begin
            insert @t values(@id_old , stuff(@s,1,1,''))
            select @s = ',' + cast(@value as varchar) , @id_old = @id
          end
        fetch my_cursor into @id , @value
    END
    insert @t values(@id_old , stuff(@s,1,1,''))
    close my_cursor
    deallocate my_cursorselect * from @t
    drop table tb
      

  2.   

    主要是楼主的需求和结果不是一回事.如果是需要你说的那种结果.使用两表进行left join即可.select a.* , isnull(b.某字段,0) from a left join b on a.关键字 = b.关键字
      

  3.   

    select moongoods.* , isnull(moonjxcmx.goodsKc,0) from moongoods where goodsspell like '%lh%' left join moonjxcmx on moongoods.goodsid = moonjxcmx.goodsId and buyersId='009/001-015'这一句出错like附近
      

  4.   

    "select moongoods.*,moonjxcmx.* from moongoods,moonjxcmx where moongoods.goodsspell like '%"+Session["serchPro"]+"%' and moongoods.goodsid=moonjxcmx.goodsId and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'"我就是这个意思,上面这样就行,但是如果moonjxcmx中没有的记录,就搜不出来,该怎么改一下。
      

  5.   

    用left joinselect moongoods.*,moonjxcmx.* from moongoods left join moonjxcmx on and moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'" 
      

  6.   


    这样也可以,但是moonjxcmx表中可能有些没有符合这些条件的记录,moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'" 我想显示的是moongoods表中的goodsid goodsname goodsspell goodsgg和moonjxcmx表中的goodsKc这些字段,
    我想如果有符合where后面条件的记录,就正常显示,如果没有符合上面where条件的记录,我想moongoods的记录正常显示,moonjxcmx中的goodsKc这个字段把对应的记录显示为0
      

  7.   


    select a.* , isnull(b.某字段,0) from a left join b on a.关键字 = b.关键字select a.* , isnull(b.某字段,0) from a left join b on a.关键字 like '%' + b.关键字 + '%'
      

  8.   

    select moongoods.* , isnull(moonjxcmx.goodsKc,0) 
    from moongoods left join moonjxcmx 
    on moongoods.goodsid = moonjxcmx.goodsId 
    where goodsspell like '%lh%' and buyersId = '009/001-015' 
      

  9.   

    select moongoods.*,moonjxcmx.* from moongoods left join moonjxcmx on and moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'"可能moongoods.goodsid=moonjxcmx.goodsId 这个条件不能立,moonjxcmx这个表中可能goodsId 没有记录
                                                                 moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
                                                                 moonjxcmx这个表中可能没有onlyId没有记录
    如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
      

  10.   

    select moongoods.*,moonjxcmx.* from moongoods left join moonjxcmx on and moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'"可能moongoods.goodsid=moonjxcmx.goodsId 这个条件不能立,moonjxcmx这个表中可能goodsId 没有记录
                                                                 moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
                                                                 moonjxcmx这个表中可能没有onlyId没有记录
    如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
      

  11.   

    select moongoods.*,isnull(moonjxcmx.buyersId,''),isnull(moonjxcmx.goodsId,''),isnull(moonjxcmx.goodsKc,0),isnull(moonjxcmx.onlyId,'') from moongoods,moonjxcmx where moongoods.goodsspell like '%"+Session["serchPro"]+"%' and moongoods.goodsid=moonjxcmx.goodsId and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'这样有什么错吗?
      

  12.   

    select moongoods.*,moonjxcmx.* from moongoods left join moonjxcmx on and moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'" 可能moongoods.goodsid=moonjxcmx.goodsId 这个条件不能立,moonjxcmx这个表中可能goodsId 没有记录 
                                                                moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录 
                                                                moonjxcmx这个表中可能没有onlyId没有记录 
    如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0 
      

  13.   

    select moongoods.*,moonjxcmx.* from moongoods left join moonjxcmx on and moongoods.goodsid=moonjxcmx.goodsId where moongoods.goodsspell like '%"+Session["serchPro"]+"%'  and moonjxcmx.buyersId='"+Session["buyeriId"].ToString()+"' and moonjxcmx.onlyId like '%"+s1+"%'" 可能moongoods.goodsid=moonjxcmx.goodsId 这个条件不能立,moonjxcmx这个表中可能goodsId 没有记录 
                                                                moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录 
                                                                moonjxcmx这个表中可能没有onlyId没有记录 
    如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0 
    哪果后面这几个条件不成立,也就是说moonjxcmx表里没有记录时执行:
    select * from moongoods where goodsspell like '%"+Session["serchPro"]+"%' 各位帮忙啊!