2015-02-04 3 views
0

나는 두 개의 테이블이 어디 왼쪽은에서 문제를 가입 .id, activity_images에 항목이 없을 수도 있습니다.MySQL의 절

나는 activity_images에있는 데이터에 관계없이 모든 데이터를 기본적으로 가져오고 싶습니다.

select a.*,a.id as 'activity_id',b.* 
    from activities a 
    left join activity_images b on a.id = b.activity_id 
    where b.image_type='main' LIMIT 0, 9 

문제는 출력입니다 :

다음은 내 쿼리입니다. 위 쿼리는 일치하는 행에 대한 데이터 만 제공하고 b.image_type = 'main'입니다. activity_images에 항목이없는 행은 출력하지 않습니다.

나는 모든 행을 원하지만 동시에 image_type에 대한 다른 값이 있기 때문에 b.image_type = 'main'이되도록하고 싶습니다. image_type = 'main'에 대한 값을 얻고 싶습니다 (If 전혀 일치합니다).

상담하십시오. 미리 감사드립니다.

+0

:

이 처리하는 적절한 방법은 ON 절에 기준을 이동하는 것입니다? 이것을 논리적으로 생각하십시오. – Devon

+0

activity_images가없는 모든 행과 type이 main 인 activity_images가있는 행을 (비공식적으로 표현하기 위해) where 절을'where coalesce (b.image_type, 'main') = 'main'으로 변경해야합니다. 그것이 당신의 의도가 아니라면, cf. 데본의 코멘트. – collapsar

+0

thats 전체적인 포인트 .... 내 말은 .. 모든 행이 일치하면 image_type = 'main'과 일치해야합니다. 그렇지 않으면 null로 반환합니다. 그럴 가능성은 없습니까? – user1411837

답변

0

INNER JOIN으로 처리됩니다. activity_images에 일치하는 행이 다음 방법 수있는오고 image_type = 주이없는 경우

SELECT a.*, a.id as 'activity_id', b.* 
    FROM activities a 
    LEFT JOIN activity_images b 
    ON b.activity_id = a.id 
    AND b.image_type = 'main' 
+0

고마워요.이 답변은 이전에 받아 들여진 답변보다 여러면에서 실제로 도움이되었습니다. – user1411837

1
select a.*,a.id as 'activity_id',b.* 
    from activities a 
    left join activity_images b on a.id = b.activity_id 
    where b.image_type='main' OR b.image_type IS NULL 
LIMIT 0, 9 

원하는 것이 맞습니까?

이 경우 null이 아닌 image_type을 권장합니다. 그렇지 않으면 일치하는 행을 가진 데이터를 얻을 수 있지만 image_type은 실제로 null로 설정됩니다.

+0

Ohh ... 나는 지금 정말로 어리 석다. 예, 이것이 제가 원했던 것입니다. 데본에게 고마워. – user1411837

+0

반갑습니다. – Devon

0

하위 쿼리를 사용해보십시오. 이 원하는 이미지 유형과 활동 이미지 테이블의 행만을 먼저 선택되며, 여전히 활동 테이블에서 모든 것을 선택하게됩니다하십시오 WHERE 절의 조건이 조인 된 테이블에 적용 할 때

, 그것은 기본적으로의
SELECT a.*,b* 
FROM activities a 
    LEFT JOIN (
     SELECT * FROM activity_images WHERE image_type = 'main' 
    ) b ON a.id = b.activity_id; 
SELECT * FROM activity_images WHERE image_type = 'main' a; 
+0

읽기 쉽도록 쿼리 텍스트의 서식을 지정하십시오. – DanM7

+0

고마워요 @DanM - 여기에 내 첫 번째 코드 게시 및 서식을 확실히 보유하지 않았습니다. – Songsparrow