도움

2010-11-27 2 views
2

난 두 테이블,도움

A) 앨범

alt text

B) 사진

alt text

나는 다음과 같은 쿼리를 사용하고 있습니다 albums.id, albums.cover_picture_id, pictures.url을 선택하십시오. 여기서 albums.cover_picture_id = pictures.id, 나는 foll을 수행하고 싶습니다.

select all the values from albums

을 때문에,뿐만 아니라 내가 다음 SELECT

SELECT 
albums.id, 
albums.cover_picture_id, 
pictures.url 
FROM albums 
JOIN pictures 
ON 
(
albums.cover_picture_id = pictures.id 
) 

잘 작동을 사용하고있는 목적

을 albums.cover_picture_id을 참조하여 pictures.url를 가져해야하지만 난이 문제는 여기에서, 앨범 엔티티 albums.cover_picture_id는 pictures.id에 존재하지 않는 값 0을 포함 할 수 있습니다. 그래서 0을 찾으면 값을 가져 오지 않을 것입니다. 찾은 경우에도 앨범 테이블에서 모든 앨범을 가져오고 싶습니다. 어떻게 select 문에 절을 추가합니까?

당신에게 변화

답변

3

사용과 같은 LEFT JOIN :

SELECT 
albums.id, 
albums.cover_picture_id, 
pictures.url 
FROM albums 
LEFT JOIN pictures 
ON 
(
albums.cover_picture_id = pictures.id 
) 

위키 백과의 발췌 내용 :

테이블 A와 B에 대한 왼쪽 외부 조인 (또는 단순히 왼쪽 조인)의 결과는 조인 조건에서 일치하는 레코드가없는 경우에도 항상 "왼쪽"테이블 (A)의 모든 레코드를 포함합니다. "오른쪽"테이블 (B). 즉, ON 절이 B에서 0 (영) 레코드와 일치하면 조인은 여전히 ​​결과에서 행을 반환하지만 B에서 각 열에 NULL을 반환합니다. 즉, 왼쪽 외부 조인은 왼쪽에서 모든 값을 반환합니다. 테이블과 오른쪽 테이블의 일치 값 (또는 일치하는 조인 술어가없는 경우 NULL). 오른쪽 테이블이 한 행을 반환하고 왼쪽 테이블이 둘 이상의 일치하는 행을 반환하면 왼쪽 테이블의 각 개별 행에 대해 오른쪽 테이블의 값이 반복됩니다.

+1

부끄러워서 고맙습니다. 내 문제를 해결했습니다. –

+0

안녕하세요. – shamittomar

3

시도를 감사하여 JOIN 당신이 pictures에 일치하는 레코드가없는 경우에도 albums에서 모든 레코드를 포함 할 이후 LEFT JOIN에 :

SELECT 
albums.id, 
albums.cover_picture_id, 
pictures.url 
FROM albums 
LEFT JOIN pictures 
ON 
(
    albums.cover_picture_id = pictures.id 
)