CLASS web

MySQL

2개 테이블에서 데이터 불러오기(LEFT JOIN)

2개 테이블에서 데이터 불러오기(LEFT JOIN)

MySQL LEFT JOIN

앞에서 우리는 JOIN문에 대해서 학습했습니다.

정확히는 INNER JOIN문이었습니다.

INNER JOIN문의 결과는 다음과 같았습니다.

SELECT m.name, a.address FROM member m INNER JOIN address a ON(m.memberID = a.memberID);
MySQL LEFT JOIN

즉, 두 테이블간에 유효한 데이터만 불러왔습니다.

한 테이블에 데이터가 없으면 그 데이터는 안불러오죠.

하지만 당연하게도 주소를 등록하지 않은 고객들도 있습니다.

주소를 등록하지 않은 고객들의 정보도 함께 불러오겠습니다.

LEFT JOIN문 사용하기

LEFT는 왼쪽을 의미하지요?

SELECT m.name, a.address FROM member m JOIN address a ON(m.memberID = a.memberID);

위의 쿼리문에서 member 테이블은 왼쪽에 있고 address 테이블은 오른쪽에 있습니다.

즉, 왼쪽에 있는 테이블을 기준으로 한다는 의미입니다.

그러면 다음의 쿼리문을 사용해 결과를 확인합시다.

SELECT m.name, a.address FROM member m LEFT JOIN address a ON(m.memberID = a.memberID);

단순히 JOIN앞에 LEFT만 넣었습니다.

MySQL LEFT JOIN

어떤가요? 결과가 다릅니다.

address 테이블에 정보가 없더라도 LEFT JOIN을 사용하면 LEFT에 해당하는 테이블인 member 테이블에 정보가 모두 나타납니다.

자 그러면 하나 더 해봅시다. 이번에는 address 테이블에 데이터가 없는 member 데이터만 불러보겠습니다.

MySQL LEFT JOIN

간단합니다. 조건문을 추가합니다. member테이블의 대표 필드값이 NULL인 것을 불러옵니다.

그려면 조건문은 다음과 같습니다.

WHERE a.addressID IS NULL;

그럼 최종적으로 쿼리문은 다음과 같습니다.

SELECT m.name, a.address FROM member m LEFT JOIN address a ON(m.memberID = a.memberID) WHERE a.addressID IS NULL;

결과와 같이 address 테이블에 데이터가 없는 member 테이블이 데이터만 보입니다.

MySQL LEFT JOIN



댓글 0개

정렬기준

PinkCoding

PinkCoding

X

PinkCoding

Web Scratch Pad

X

loading

            
            
        

컨텐츠로 돌아가기