发布网友
共2个回答
热心网友
一个SQL语句应该很难写出来。
一般可以建立两个函数,分别为取courseid,和coursename。
然后,根据表1,调用函数就可以了。
create function get_courseid ( @uid int )
returns varchar(100)
as
begin
declare @c varchar(100)
set @c = ''
select @c = @c + cast ( courseid as varchar(10)) + ','
from 第二个表
where uid = @uid
end
create function get_coursename ( @uid int )
returns varchar(100)
as
begin
declare @c varchar(100)
set @c = ''
select @c = @c + coursename + ','
from 第二个表
where uid = @uid
end
最后:
select uid,uname,dbo.get_courseid(uid) courseID,dbo.get_coursename(uid) courseName
from 第一个表
这样应该就可以了。
如果有语法错误,调试一下,应该 就可以了。
热心网友
DECLARE @t1 TABLE ([uid] INT, NAME NVARCHAR(20))
DECLARE @t2 TABLE (courseID INT, [uid] INT, courseName NVARCHAR(20))
INSERT INTO @t1 VALUES (1, N'张三')
INSERT INTO @t1 VALUES (2, N'李四')
INSERT INTO @t1 VALUES (3, N'王二')
INSERT INTO @t2 VALUES (1, 1, N'语文')
INSERT INTO @t2 VALUES (2, 1, N'数学')
INSERT INTO @t2 VALUES (3, 1, N'英语')
INSERT INTO @t2 VALUES (4, 2, N'语文')
INSERT INTO @t2 VALUES (5, 2, N'计算机')
SELECT t1.[uid], t1.NAME,
STUFF((SELECT ',' + CAST(courseID AS VARCHAR) FROM @t2 WHERE [uid] = t1.uid FOR XML PATH('')), 1, 1, '') AS courseID,
STUFF((SELECT ',' + CAST(courseName AS VARCHAR) FROM @t2 WHERE [uid] = t1.uid FOR XML PATH('')), 1, 1, '') AS courseName
FROM @t1 t1
XML FOR PATH的巧用