來自中油瑞飛的SQL筆試題20131202

1、有三張表,用戶表,用戶角色表,角色表,
使用sql顯示如下內容:
用戶ID,用戶名,超級管理員,錄入員,會計
也就是角色用逗號分隔。
解:

1、填充數據到表User
select * from [User]
INSERT INTO [northwind].[dbo].[User]
           ([ID]
           ,[NAME])
     VALUES
           (1
           ,'zhaohy')
           INSERT INTO [northwind].[dbo].[User]
           ([ID]
           ,[NAME])
     VALUES
           (2
           ,'zhangyy')
GO

2、填充數據到表role
select * from [role]
INSERT INTO [northwind].[dbo].[Role]
           ([ID]
           ,[RoleName])
     VALUES
           (1
           ,'senior software engineer')
           INSERT INTO [northwind].[dbo].[Role]
           ([ID]
           ,[RoleName])
     VALUES
           (2
           ,'project manager')
                    INSERT INTO [northwind].[dbo].[Role]
           ([ID]
           ,[RoleName])
     VALUES
           (3
           ,'UI Disigner')
                               INSERT INTO [northwind].[dbo].[Role]
           ([ID]
           ,[RoleName])
     VALUES
           (4
           ,'Tester')
GO
3、填充數據到表Role_User
select * from Role_User
INSERT INTO [northwind].[dbo].[Role_User]
           ([RoleID]
           ,[UserID])
     VALUES
           (1
           ,1)
GO
INSERT INTO [northwind].[dbo].[Role_User]
           ([RoleID]
           ,[UserID])
     VALUES
           (2
           ,1)
           INSERT INTO [northwind].[dbo].[Role_User]
           ([RoleID]
           ,[UserID])
     VALUES
           (3
           ,1)
                      INSERT INTO [northwind].[dbo].[Role_User]
           ([RoleID]
           ,[UserID])
     VALUES
           (4
           ,2)

4、查詢出來:
drop table #result;
select * into #result from (select u.ID,u.NAME,ru.RoleID,r.RoleName from [user] u inner join Role_User ru on ru.UserID =u.ID inner join [Role] r
on ru.RoleID=r.ID) as t;
select * from #result;
select id,name, [RoleName] = stuff((select ',' + [RoleName] from #result t where id = #result.id for xml path('')) , 1 , 1 , '') 
from #result 
group by id ,name;
drop table #result;
輸出結果:
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章