0

3 つのテーブルがあり、グループの配置に基づいてデータをフィルター処理したいと考えています。

login

id | name     
-- | -------- 
1  | drew        
2  | john        
3  | alex         

group

id | group_name
-- | --------
1  | Scientist       
2  | Singer       
3  | Teacher       
4  | Dancer       
5  | Atty       
6  | IT       

group_member

id | group_id| login_id
-- | --------| ------
1  | 1       | 1
2  | 2       | 1
3  | 1       | 2  
4  | 3       | 2 
5  | 4       | 2 
6  | 3       | 3  
7  | 4       | 3

たとえば、ログイン 1 を選択した場合、login_id 1 が他のログインと同じ group_id を持っている場合、このグループが表示されます。

login_id 1 には次のレコードがあります

group_id|group_name| login_id
--------| ------   | ------ 
   1    | Scientist| 1
   2    | Singer   | 1

グループをフィルタリングすると

結果は

group_id|group_name| login_id
--------| ------   | ------ 
   3    | Teacher  | 2
   4    | Dancer   | 2
   3    | Teacher  | 3
   4    | Dancer   | 3
4

2 に答える 2

0

私がよく理解していれば、これを使用できます:

select group_id, group_name, login_id
from group_member join groups on
group_member.group_id = groups.id
where group_id not in 
   (select group_id from group_member
    where login_id=1)

フィドルの例を見る

于 2013-09-13T06:52:44.640 に答える
0
select g.id,g.group_name,m.login_id
from group_member m
join group g on m.group_id=g.id
where m.group_id not in (
select group_id
from group_member
where login_id=1)
于 2013-09-13T06:54:48.137 に答える