ユーザーのテーブルとグループのテーブル、およびユーザーとグループをリンクするテーブルがあります。デフォルトのグループは「すべてのユーザー」です。すべての新規ユーザーは、このグループに配置されます。その後、販売や購入などのより具体的なグループにリンクされますが、「すべてのユーザー」にもとどまります。「すべてのユーザー」グループに属しているが、他のグループのメンバーではないすべてのユーザーを照会したいと思います。
十分に説明したことを願っています。
ありがとう、ボブ
SELECT userid, count(*) group_count
FROM user_groups
GROUP BY userid
HAVING group_count = 1
ユーザーが 1 つのグループだけに属している場合、それはすべてのユーザー グループである必要があり、これはそれらのユーザーだけを一覧表示します。
3 つのテーブルがあるとします。たとえば、次のようにします。
tblUser: userid, username
tblgroup: groupid, groupname
tblUserGroup: fkuserid, fkgroupid
新しいユーザーを作成するときは、とtblUserGroup
をリンクして、 にレコードを自動的に作成する必要があります。userid
groupid
ユーザーが新しいグループを追加するときはtblUserGroup
、同じレコードuserid
と新しいgroupid
. 最初のレコードは両方のグループに含まれているため、削除する必要はありません。
これは、AllUsers というテーブルに id という各ユーザーの一意の ID があり、Group テーブルに AllUsers.id にリンクする外部キー userId があることを前提としています。
SELECT * FROM AllUsers WHERE AllUsers.id != userId;
私があなたの質問を理解していれば、それでうまくいくはずです。