2011-11-30 2 views
0

나는 몇 가지 어려움에 봉착 내 가입 및 NULL입니다 ..MySQL은 : 조인 된 테이블의 NULL입니다

을 내가 따로 사용자가 지정한 특정 그룹 카테고리 ID 년대의 아닌 모든 멤버를 찾을 수 있습니다 싶지 기본적으로 무엇을 .

SELECT m.* FROM elvanto_members AS m 
    LEFT JOIN elvanto_groups AS g ON g.deleted = 0 
    LEFT JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id AND (gc.category_id = '1' OR gc.category_id = '2') 
    WHERE gr.id IS NULL 

회원 중 일부는 어떤 카테고리 카테고리와도 별개가 아니기 때문에 LEFT JOIN을 만들었습니다.

나는 의미가 있습니까? 이 문제를 해결하는 방법을 알고 있습니까?

+1

gr이라는 테이블이 없습니다. 별칭은 무엇입니까? –

답변

1

이 시도 :

SELECT m.* FROM elvanto_members AS m 
WHERE 
    not exists 
    (
    SELECT 1 FROM 
    elvanto_groups AS g 
     INNER JOIN elvanto_groups_categories AS gc ON 
     gc.group_id = g.id 
    WHERE 
    gc.category_id IN ('1','2') AND 
    g.id = m.group_id AND 
    g.deleted = 0 
) 
+0

group_id라는 구성원의 특성을 기반으로 구성원과 그룹 간의 조인이 있다고 가정합니다. –

1
SELECT m.* 
FROM elvanto_members AS m 
LEFT JOIN elvanto_groups AS g ON g.id = m.group_id AND g.deleted = 0 
LEFT JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id 
              AND gc.category_id IN ('1','2') 
WHERE gc.group_id IS NULL 
GROUP BY m.* 

나는 질문에서 누락 된 것을 사양에 채워.
category_id은 실제로 문자열 유형입니까? 나는 그것을 숫자로 기대할 것이다. 그러면이 표현식은 다음과 같아야합니다.

AND gc.category_id IN (1,2) 
관련 문제