怎样把从表中一个字段的凭起来,加在主表的后面,高手请进!!!!

Endlessrain 2003-08-22 01:58:57
有2张表,主表记录班号和班级名称(id,class) 从表记录班号和学生 (id,student),我想返回的表中是这样的结构(id,class,student) 其中student是该班级下都有student的拼接。
举个例子来说:主表记录 (001,1班) 从表记录 (001,张三) (001,李四)
我想得到的结果是 (001,1班,张三李四)
请问这样应该怎么写sql语句,高手帮帮忙!!!!小弟在这里万分感谢了
...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zengqf_W 2003-08-22
  • 打赏
  • 举报
回复
create table Class(id varchar(50), class varchar(50))
create table Student(id varchar(50), name varchar(50))
insert into class(id, class) values('001', '一班')
insert into class(id, class) values('002', '二班')

insert into Student(id, name) values('001', '张三')
insert into Student(id, name) values('001', '李四')
insert into Student(id, name) values('002', '张s三')
insert into Student(id, name) values('002', '李s四')
go

create function GetName(@id varchar(100))
returns nvarchar(4000)
as
begin
declare @s varchar(4000)
set @s = ''
select @s = @s + rtrim(name) +',' from student where id = @id
set @s = left(@s, len(@s) -1)
return @s
end
go

select a.id ,a.class, dbo.getname(a.id) from class a
group by a.id,a.class

drop table class
drop table student
drop function getname
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
先建一个合并的函数
create function getstr(@id Nchar(3))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+rtrim(student) from 从表 where id=@id
if Len(@str) > 0
set @str=left(@str,len(@str)-1)
return @str
end

GO


2,调用自定义函数得到结果
select distinct id, class, dbo.getstr(id) as names from 主表

愉快的登山者 2003-08-22
  • 打赏
  • 举报
回复
create function getstr(@id Nchar(4000))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(2000)
set @str=N''
select @str=@str+rtrim(student) from 从表
where id=@id
if @str<>N''
set @str=left(@str,len(@str)-1)
return @str
end

GO

2,
select id, class, dbo.getstr(id) as names from 主表 group by id

愉快的登山者


◢◣◢◣◢◣

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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