数据库中一个字段存了两个部分的id,以逗号分割,在查询时候怎么能显示名称

zhengye6910 2011-06-28 04:30:36
----------表1------------
客户名称 相关业务员
客户A 25,36
----------表2------------
用户号 用户名
25 张三丰
36 李四民
----------表3------------
客户名称 相关业务员
客户A 张三丰,李四民

请问如何将表1转成表3,SQL如何写?谢谢
...全文
416 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhengye6910 的回复:]

mysql怎么写啊?
[/Quote]
那你需要去mysql区问一下
zhengye6910 2011-06-28
  • 打赏
  • 举报
回复
mysql怎么写啊?
xuexiaodong2009 2011-06-28
  • 打赏
  • 举报
回复
设计不合理
叶子 2011-06-28
  • 打赏
  • 举报
回复
写个SQL SERVER 2000下的吧。

create table 表1(客户名称 varchar(5),相关业务员 varchar(20))
insert into 表1
select '客户A','25,36'

create table 表2(用户号 int,用户名 varchar(6))
insert into 表2
select 25,'张三丰' union all
select 36,'李四民'

go
create function [dbo].[m_split_maco]
(@c varchar(2000),@split varchar(2))
returns varchar(40)
as
begin
declare @t table(col varchar(200))
while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
-- SET @c = substring(@c,charindex(' ',@c)+1,len(@c))
end
insert @t(col) values (@c)
declare @sql varchar(2000)
select @sql=isnull(@sql+',','')+b.用户名 from @t a left join 表2 b
on a.col=b.用户号

return @sql
end

select 客户名称,相关业务员=dbo.[m_split_maco](相关业务员,',') from 表1

/*
客户名称 相关业务员
----- ----------------------------------------
客户A 张三丰,李四民
*/

AcHerat 2011-06-28
  • 打赏
  • 举报
回复

select 客户名称,
相关业务员=stuff((select ','+用户名 from 表2
where charindex(','+用户号+',',','+a.相关业务员+',')>0 for xml path('')),1,1,'')
from 表1 a
AcHerat 2011-06-28
  • 打赏
  • 举报
回复

with cte as
(
select distinct a.客户名称,substring(a.相关业务员,b.number,charindex(',',a.相关业务员+',',b.number)-b.number) as 业务员
from 表1 a,master..spt_values b
where b.[type] = 'p' and b.number between 1 and len(a.相关业务员)
and substring(','+a.相关业务员,b.number,1)=','
)

select 客户名称,
stuff((select ','+b.用户名 from cte a,表2 b
where a.业务员 = b.用户号 and 客户名称 = t.客户名称 for xml path('')),1,1,'') as 相关业务员
from cte t
group by 客户名称
GoAwayZ 2011-06-28
  • 打赏
  • 举报
回复
select 客户名称,
相关业务员=stuff((select ','+用户名 from 表2
where charindex(用户号+',',a.相关业务员+',')>0 for xml path('')),1,1,'')
from 表1 a

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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