Create Function F_GetStr(@userid int)
returns varchar(200)
as
begin
declare @return varchar(200)
set @return=''
select @return=@return+','+User_name+'' from User where Userid=@Userid
return stuff(@return,1,1,'')
endselect
film_name=(select film_name from film where film_nameid=film_nameid),
user_name=dbo.F_GetStr(film_nameid)
from
user_film
group by film_nameid
order by film_nameid
returns varchar(200)
as
begin
declare @return varchar(200)
set @return=''
select @return=@return+','+User_name+'' from User where Userid=@Userid
return stuff(@return,1,1,'')
endselect
film_name=(select film_name from film where film_nameid=film_nameid),
user_name=dbo.F_GetStr(film_nameid)
from
user_film
group by film_nameid
order by film_nameid
(
film_nameid int,
film_name varchar( 100 )
)
goinsert into film
select 1, '城市猎人' union
select 2, '阿滋漫画大王'
gocreate table [user]
(
[userid] int,
[user_name] varchar( 100 )
)
goinsert into [user]
select 1, '撩' union
select 2, '阿香' union
select 3, '千带' union
select 4, '阿咪'
gocreate table [user_film]
(
film_nameid int,
[user_id] int
)
goinsert into user_film
select 1, 1 union
select 1, 2 union
select 2, 3 union
select 2, 4
gocreate function stp_GetUsers( @film_nameid int )
returns varchar( 100 )
as
begin
declare @result varchar( 100 )
set @result = ''
select @result = @result + b.[user_name] + ','
from user_film a
inner join [user] b on a.[user_id] = b.[userid]
where a.film_nameid = @film_nameid
set @result = substring( @result, 1, len( @result ) - 1 )
return @result
end
goselect b.film_name, a.[user_name]
from ( select film_nameid, dbo.stp_GetUsers( film_nameid ) as [user_name]
from user_film
group by film_nameid
) as a
inner join film b
on a.film_nameid = b.film_nameid
godrop function stp_GetUsers
go
drop table film, [user], user_film
go
create table film
(film_nameid int,
film_name nvarchar(50))
insert film
select 1,'城市猎人' union all
select 2,'阿滋漫画大王'
go
create table users
(userid int,
users_name nvarchar(5))
insert users
select 1,'撩' union all
select 2,'阿香' union all
select 3,'千带' union all
select 4,'阿咪'
go
create table user_film
(film_nameid int,
users_id int)
insert user_film
select 1,1 union all
select 1,2 union all
select 2,3 union all
select 2,4
---建立一个视图
create view cx_view
as
select a.film_name,
b.users_name
from film a,users b,user_film c
where a.film_nameid = c.film_nameid and b.userid = c.users_id
go
---再自定义一个函数
create function dbo.fc_cx(@var varchar(20))
returns varchar(200)
as
begin
declare @s varchar(2000)
set @s = ''
select @s = @s + ',' + users_name from cx_view where film_name = @var
set @s = stuff(@s,1,1,'')
return @s
end
go
----使用
select film_name,dbo.fc_cx(film_name) as users_name from cx_view
group by film_name
------结果-------
/*
film_name users_name
阿滋漫画大王 千带,阿咪
城市猎人 撩,阿香
*/