日期:2014-05-18  浏览次数:20768 次

不知道能不能实现这样的功能
select   a.jq_id,b.jq_content,c.jd_name   from   hezuo_jq   a,hulian_jq_info   b,hulian_jq_jd   c   where   a.jq_id   =   b.jq_id   and   a.jq_id   =   c.jq_id

查询到的结果是:
jq_id   |   jq_content   |   jd_name
98         |   寿州窑遗址   |   马祖庵
98         |   寿州窑遗址   |   神秘谷
98         |   寿州窑遗址   |   石牛古洞
98         |   寿州窑遗址   |   天柱峰
137       |   雾灵湖           |   化城寺
137       |   雾灵湖           |   甘露寺
..         |   ...                 |   ...

前台程序循环显示样式
景区id         景区           景点
98           寿州窑遗址   马祖庵   神秘谷   石牛古洞   天柱峰
--------------------------------------------
98           雾灵湖     化城寺   甘露寺
----------------------------------
上面的sql语句在程序中这样显示好像有点困难,我想能不能把同一个js_id下的多条jd_name记录在sql里转化到一个字段
例如这样:
jq_id   |   jq_content   |   jd_name
98         |   寿州窑遗址   |   马祖庵,神秘谷   ,石牛古洞,天柱峰
137       |   雾灵湖           |   化城寺,甘露寺

不知道能不能实现 如果可以的话请指教下


------解决方案--------------------
Create Function F_Get_jd_name(@jq_id Int)
Returns Nvarchar(4000)
As
Begin
Declare @S Nvarchar(4000)
Select @S = ' '
Select @S = @S + ', ' + jd_name From hulian_jq_jd Where jq_id = @jq_id
Select @S = Stuff(@S, 1, 1, ' ')
Return @S
End
GO
select a.jq_id,b.jq_content,dbo.F_Get_jd_name(jq_id) AS jd_name from hezuo_jq a,hulian_jq_info b where a.jq_id = b.jq_id
group by a.jq_id,b.jq_content
------解决方案--------------------
create function dbo.fn_Merge(@jq_content varchar(1000))
returns varchar(8000)
as
begin
declare @name varchar(8000)
set @name= ' '
select @name=@name+ ', '+jd_name from test where jq_content=@jq_content
return stuff(@name,1,1, ' ')
end
go

create table test(jq_id int,jq_content varchar(50),jd_name varchar(50))
insert test select 98, '寿州窑遗址 ', '马祖庵 '
union all select 98, '寿州窑遗址 ', '神秘谷 '
union all select 98, '寿州窑遗址 ', '石牛古洞 '
union all select 98, '寿州窑遗址 ', '天柱峰 '
union all select 137, '雾灵湖 ', '化城寺 '
union all select 137, '雾灵湖 ', '甘露寺 '

select distinct jq_content,dbo.fn_Merge(jq_content) from test