mysql表搜索不在俱乐部的成员

时间:2013-11-06 01:17:40

标签: mysql

我有一张俱乐部的桌子,最多可以有10名成员。如何查询加入我现在不是会员的俱乐部。

每个俱乐部最多可以有10行,每个俱乐部都有不同的会员ID。

1 个答案:

答案 0 :(得分:0)

每个俱乐部可以有10名成员并不重要。这只是一个“业务”规则或逻辑约束......

假设有三个表:

Club: Club_ID, Club_Name

Member: Member_ID, Member_Name

Club_Member: Club_Member_ID, Club_ID, Member_ID

如果您的Member_ID为123,则会显示您所属的所有俱乐部:

select member.member_id, member.member_name,
       club.club_id, club.club_name 

from   member 

       join club_member on member.member_id = club_member.club_id

       join club on club_member.club_id = club.club_id

where  member_id = 123;

要查看你不在的人......

Select club.club_id, club.club_name 

from   club

where  club.club_id not in (    
             select club.club_id  
             from   member  
                    join club_member on member.member_id = club_member.club_id 
                    join club on club_member.club_id = club.club_id 
             where  member_id = 123)

如果你真的只有一个这样的表:

Club_Members: Club_ID, Club_Name, Member_ID, Member_Name 

您所属的所有俱乐部列表:

select club_id 
from   club_members 
where  member_id=123

您不属于的所有俱乐部的列表:

select distinct club_id, club_name
from   club_members 
where  club_id not in (
          select club_id 
          from   club_members 
          where  member_id=123 );