2013-03-13 2 views
0

오늘 나는 혼란스럽고 혼란스러운 질문을 던져 여기에 있습니다. 아마도 누군가가 나에게 약간의 도움을 줄 수 있습니다.특정 레코드 데이터가있는 행 집합 선택

다음 세 개의 표가 있습니다. 이 질문에 대해서는 단순화되어 있습니다.

// table_checks //

check_id |task_id| status 
    1  | 1 | Done 
    2  | 1 | Done 
    3  | 1 | Done 
    4  | 2 | Done 
    5  | 2 | Not Done 
    6  | 2 | Not Done 
    7  | 2 | Not Done 
    8  | 2 | Done 
    9  | 3 | Done 
    10  | 3 | Done 
    11  | 3 | Not Done 
    12  | 3 | Done 

// table_user //

user_id | email | type 
    1 | [email protected] | IN 
    2 | [email protected] | IN 
    3 | [email protected] | EX 

// table_chk_usr 여기 //

check_id |user_id 
    1  | 1  
    2  | 1  
    3  | 1  
    4  | 2  
    5  | 2  
    6  | 2  
    7  | 2  
    8  | 2  
    9  | 3  
    10  | 3  
    11  | 3  
    12  | 3  

가 table_chk_usr에서의 관계와 세 개의 테이블입니다 표. table_checkstask_ids을 할당 된 사용자 모두가 status = done으로 어디에 내가 테이블 table_user에서 유형 'IN'으로 table_user의 선택 행을 조회하고 어떻게

내 질문입니다.

을 다음과 같이

그래서 예상되는 결과가 있어야한다 // table_user // 1 USER_ID 완료 상태로 모든 task_ids를 완료 한 이후

user_id | email | type 
    1 | [email protected] | IN 

.

나는 이것이 독서중인 사람들에게 의미가 있기를 바랍니다. 어떤 도움을 많이 주시면 감사하겠습니다.

어떤 식 으로든 도움이된다면 PHP를 서버 측 언어로 사용하고 있습니다.

답변

2

나는 이것이 당신이 찾고있는 것이라고 생각합니다.

select user.user_id, user.email, user.type, 
sum(if(status = 'done',1, 0)) as done, count(*) as checks 
    from checks 
    join chk_user on checks.check_id = chk_user.check_id 
    join user on chk_user.user_id = user.user_id 
    group by chk_user.user_id 
    having done = checks 

sqlFiddle

+0

.. 와우 나는 말문이있다. 신장이나 간 이식이 필요한 경우 나에게 msg를 보내십시오. – BaconJuice

0

여기에서 참여를 사용할 수 있지만 더 좋은 방법이있을 수 있습니다.

SELECT * FROM table_checks 
INNER JOIN table_chk_usr 
    ON table_checks.check_id = table_chk_usr.check_id 
INNER JOIN table_user 
    ON table_chk_usr.user_id = table_user.user_id 
WHERE table_checks.status = 'Done' 
AND table_user.type = 'IN' 
+0

(1) 표 2 이름 누락 JOIN. (2) 사용자에게 할당 된 모든 ** 작업이 "완료"상태임을 확인하지 않았습니다. –

+0

"type = 'IN'"을 잊어 버렸지 만 이것은 매우 평범한 것입니다 –

+0

혼란스러워하지는 않았습니다. 나는 'IN'** 유형의 사용자 ** 만 반환하는 OP의 요구 사항을 잊었다 고 지적했습니다. –