Sql server 如何创建查询以显示下表中的检查表?
使用SQLServer2008,我需要一个查询来显示以下结果Sql server 如何创建查询以显示下表中的检查表?,sql-server,stored-procedures,Sql Server,Stored Procedures,使用SQLServer2008,我需要一个查询来显示以下结果 User_Name Group_Name Checked user1 Lead 0 user1 Admin 1 user1 Supervisor 0 user1 Monitor 0
User_Name Group_Name Checked
user1 Lead 0
user1 Admin 1
user1 Supervisor 0
user1 Monitor 0
user2 Lead 0
user2 Admin 0
user2 Supervisor 1
user2 Monitor 1
我有4个组(领导、管理、主管、监控),链接表是用户组。如何为每个用户显示所有组(如上所述)?如果为用户选中了组,则该组显示在用户组中,如果未选中,则不显示在表中。
各表:
用户:
User_ID int
User_Name nvarchar
Email nvarchar
Group_ID int
Group_Name nvarchar
User_ID int,
Group_ID int
组:
User_ID int
User_Name nvarchar
Email nvarchar
Group_ID int
Group_Name nvarchar
User_ID int,
Group_ID int
用户组:
User_ID int
User_Name nvarchar
Email nvarchar
Group_ID int
Group_Name nvarchar
User_ID int,
Group_ID int
试试这个:
select User.User_Name, Group.Group_Name,
case when UserGroup.User_ID is null then 0 else 1 end as Checked
from User cross join Group
left join UserGroup on User.User_ID = UserGroup.User_ID
and Group.Group_ID = UserGroup.Group_ID
试试这个:
select User.User_Name, Group.Group_Name,
case when UserGroup.User_ID is null then 0 else 1 end as Checked
from User cross join Group
left join UserGroup on User.User_ID = UserGroup.User_ID
and Group.Group_ID = UserGroup.Group_ID
在SQL Server 2005+中,您可以使用运算符将每个
组
值分配给每个用户
,然后您可以加入用户组
表:
select u.user_name,
g.group_name,
case when ug.user_id is not null then 1 else 0 end Checked
from [user] u
cross apply [group] g
left join usergroup ug
on u.user_id = ug.user_id
and g.group_id = ug.group_id
请参见SQL Server 2005+中的,您可以使用操作符将每个
组
值分配给每个用户
,然后您可以加入用户组
表:
select u.user_name,
g.group_name,
case when ug.user_id is not null then 1 else 0 end Checked
from [user] u
cross apply [group] g
left join usergroup ug
on u.user_id = ug.user_id
and g.group_id = ug.group_id
看