数据库两个表:
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
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
标题:按某字段合并字符串之一(简单合并)
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间: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
这样也可以,但是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
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.关键字 + '%'
from moongoods left join moonjxcmx
on moongoods.goodsid = moonjxcmx.goodsId
where goodsspell like '%lh%' and buyersId = '009/001-015'
moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
moonjxcmx这个表中可能没有onlyId没有记录
如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
moonjxcmx这个表中可能没有onlyId没有记录
如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
moonjxcmx这个表中可能没有onlyId没有记录
如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
moonjxcmx这个表中可能没有Session["buyeriId"].ToString()的记录
moonjxcmx这个表中可能没有onlyId没有记录
如果这些条件不成立,我想把moonjxcmx的字段goodsKc显示为0
哪果后面这几个条件不成立,也就是说moonjxcmx表里没有记录时执行:
select * from moongoods where goodsspell like '%"+Session["serchPro"]+"%' 各位帮忙啊!