-1

参照が見つからない簡単な質問があります。助けていただければ幸いです。クライアントからサーバーに送信された user_ids のリスト (たとえば、(1,2,3,4)) があり、グループのテーブルで、各グループがそれらのユーザーを内部に取得した回数を検索したいと考えています。グループ テーブルの列は次のとおりです: group_id,group_name,user_id

そして、結果に各グループ名と、検索されたリストの番号からの番号が内部に表示される回数を表示したい。

0でない場合も表示したい。

例:

groupName     NumOfCustomersFromTheSentListThatAreAttachedToTheGroup
  A                   0
  B                   3

私は次のようなことを考えていました: select group_id,COUNT(userID) FROM userByGroup where userID in (1,2,3,4) group by group_id;

しかし、私には2つの問題があります:

  1. 外観のないものは表示されません (WHERE のため)
  2. 出演ごとに記​​録を取り、グループごとに記録が欲しい
4

1 に答える 1

1

別のグループ テーブル [Groups] と、ユーザーをグループ [UserGroups] にマップする別のテーブルがあると仮定しています。その場合は、次の方法で回避できるはずです。

select group_id, (select COUNT(user_id) from [UserGroups] where [UserGroups].group_id = [Groups].group_id and [UserGroups].user_id in (1,2,3,4)) NumberOfUsers from [Groups]

そうでない場合は、次のように元のテーブルをサブクエリする必要があります。

select group_id, (select COUNT(user_id) from [Groups] g2 where g2.group_id = [Groups].group_id and g2.user_id in (1,2,3,4)) NumberOfUsers from [Groups]
于 2012-10-28T18:20:01.353 に答える