1

SQL Server 2008 を使用して、次の結果を表示するクエリが必要です

 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
4

2 に答える 2

1

これを試して:

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
于 2013-02-08T21:09:19.303 に答える
0

SQL Server 2005 以降では、すべての値を eachAPPLYに割り当てる演算子を使用して、テーブルに結合できます。groupuserusergroup

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 Fiddle を参照してください

于 2013-02-08T21:13:05.333 に答える