2014-04-08 3 views
0

이 데이터와 관계 테이블이 있습니다. 내가 원하는 것은 a_id을 반환하는 쿼리입니다. 연결된 모든 사람은 status이 1과 같습니다.관계 테이블에 대한 쿼리

따라서이 경우 6이 반환됩니다.

a_id b_id status 
4  757 0 
4  758 0 
4  761 0 
5  757 1 
5  758 0 
5  761 1 
6  757 1 
6  761 1 
6  758 1 

MySQL의 5.5

+0

을 시도하고 어디 노력입니까? –

+0

@ shree.pat18'group by'과'order by'로 시도했지만,이 순서가 쓰여질 수있는 유일한 순서이기 때문에 행을'status'로 정렬 한 다음'a_id'로 그룹화하는 아이디어는 없었습니다. 작업. – Innkeeper

답변

4
SELECT DISTINCT a_id 
FROM relation_table 
WHERE a_id NOT IN (SELECT a_id FROM relation_table WHERE status != 1); 
+0

그러면 5가 반환됩니다. –

+0

@MadaraUchiha 아니요, 5가 "상태"가 0 인 행이 하나 이상 있으므로 작동합니다. – Innkeeper

+0

네, 미안 해요, 지금은 그 일을했습니다. –

1

SELECT DISTINCT a_id 
FROM table1 
WHERE a_id NOT IN 
    (SELECT a_id 
    FROM table1 
    WHERE status != 1); 

SQL Fiddle