-2

我有一张最多可容纳 10 名成员的俱乐部表。我如何查询我目前不是会员的俱乐部加入。

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

4

1 回答 1

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 ); 
于 2013-11-06T01:32:21.017 回答