1

我在 MySQL 中有三个表,

  1. 组(键group_id:)
  2. 成员(键member_id:)
  3. group_member_relations 键:group_id, member_id

最后一个表具有membersgroups(已加入该组的成员)的组合。

我一直在努力寻找一种执行单个查询的方法,该查询为我提供了不在表中的成员和组的group_member_relations列表。(基本上我想最终问一个问题“哪些组是给定成员而不是成员”)。我可以在代码中以艰难的方式做到这一点,但想知道是否可以进行单个查询。

根本不是 SQL 专家,但在过去的 20 年中使用了很多,主要是基本的东西。这显然超出了我的想象。在过去的几天里做了很多尝试,但令人尴尬的是似乎没有接近。

来自那里的 sql 向导的任何指针..

4

2 回答 2

2

成员不在的组:

select *
from group
where id not in (
  select group_id 
  from group_member_relations
  where member_id = ?)
于 2013-02-28T07:21:07.003 回答
1

以下查询将列出所有可用的组以及每个组中不存在的成员。该查询还将给出每个表的所有列。

SELECT  a.*, b.*
FROM    members a
        CROSS JOIN groups b
        LEFT JOIN group_member_table c
            ON a.memberID = c.memberID AND
                b.groupID = c.groupID
WHERE   c.memberID IS NULL OR     -- actually this condition is already enough
        c.groupID IS NULL
于 2013-02-28T07:16:39.753 回答