2012-08-27 3 views
1

나는 체크리스트 (checklist_id, content)에 항목을 포함하는 테이블과 사용자와 체크리스트 항목 번호 (checklist_fk, user_fk) 사이의 관계를 포함하는 테이블 두 개를 가지고 있습니다. 모든 사용자가있는 경우마다 사용자가, 내가MySQL이 두 테이블을 결합하지만 먼저 필터링합니다.

그러나
SELECT content, user_fk, checklist_id, checklist_fk 
    if (checklist_fk is null, false, true) completed 
    FROM checklist 
    LEFT JOIN checklist_completion ON checklist_id = checklist_fk; 

를 사용하고 사용자 (15)가

나는이를 조회 항목 3. 완료되었음을 나타내는 행이 삽입되어, 오프 항목을 확인, true를 돌려줍니다 완료 주어진 점검 목록 항목을 완료했습니다. 두 번째 테이블을 조인하기 전에 user_fk = XX를 필터링해야합니다. 어떻게해야합니까? 나는 당신이 HAVING user_fk = XX를 사용해야한다고 생각하지만 구문 오류가 발생합니다. 특정 사용자를 대상으로하는 경우

답변

2

, 그렇게 같은 LEFT JOIN 내에서 해당 조건을 추가 할 수 있습니다

SELECT content, checklist_id, checklist_fk AS completed 
FROM checklist 
LEFT JOIN checklist_completion ON checklist_id = checklist_fk AND user_fk = 123 

을, BTW 당신이 눈치 챘을 수도로이기 때문에, 나는 IF 문을 촬영했습니다 코드 내의 NULL 상태를 쉽게 확인할 수 있습니다.

+0

대단히 감사합니다. 매력처럼 작동합니다. –

관련 문제