2013-02-28 77 views
1

我在MySQL的三个表,SQL查询:给定成员不是成员是什么组?

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

最后一个表有members组合和groups(已加入该组的成员)。

我一直在努力的方式来执行一个单一的查询,给我一个不在group_member_relations表中的成员和组列表。 (基本上我想最终提出这样一个问题:“什么团体是特定成员而不是成员”)。我可以用代码中的难题做到这一点,但想知道是否可以使用单个查询。

根本不是一个SQL wiz,但在过去的20年里,它使用了很多,主要是基本的东西。这显然在我的头上。过去几天做了很多尝试,但令人尴尬的是似乎并没有接近。

从SQL向导在那里任何指针..

回答

2

组有成员不是:

select * 
from group 
where id not in (
    select group_id 
    from group_member_relations 
    where member_id = ?) 
+0

完美!我其实已经接近这个,但我现在可以看到我的逻辑关闭了。 – 2013-02-28 15:32:23

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 
+0

,以及如何将你要选择一个特定群体? – Ambrose 2013-02-28 07:27:53

+0

我也保存过,可能会有用,谢谢 – 2013-02-28 15:33:09