4
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それが唯一の値かどうかを判断する必要があります

4

1 に答える 1

1

GROUP BY一意のインデックスを分離するために使用することを検討してください。

ドキュメント: https://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html

于 2012-07-19T16:54:50.467 に答える