SELECT users.mail, users.name FROM members
LEFT JOIN users ON (users.uid = members.uid) WHERE members.group = 27
AND members.uid NOT IN (SELECT subgroup_members.uid FROM subgroup_members
LEFT JOIN subgroups ON (subgroups.id = subgroup_members.sid)
LEFT JOIN users on (users.uid = subgroup_members.uid) WHERE subgroups.oid = 27 AND subgroup_members.leader = 1)
このクエリは、サブグループのリーダーではないグループのすべてのメンバーを返します。
メンバー テーブルは にuserid(uid)
属するメンバーを示しgroup(group)
、subgroup_members
テーブルは に属するユーザーを示しますsubgroup(sid)
。リーダーシップは、subgroup_members テーブルのリーダー列の「1」で示されます。
サブグループの唯一のリーダーではないグループのすべてのメンバーを返す方法を見つけようとしていますが、今はかなり困惑しています。
その代わりに、subgroup_members.leader = 1
それが唯一の値かどうかを判断する必要があります