首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

...join查出来的数据,第四张表才是我想要的结果,sql语句怎么写...

发布网友

我来回答

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的巧用

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com