2014-09-12 4 views
0

mysql에 두 개의 테이블을 가지고 있는데, 공통 테이블을 기반으로이 두 테이블을 조인하려고했을 때이 두 테이블의 열 값이 같을지라도 null을 반환했습니다. ID_1에 대한null을 반환하는 mysql 테이블 조인

SELECT p.id, pr.id_1 
    FROM table_1 as p 
    LEFT JOIN table_2 as pr 
    ON p.string1 = pr.string1 
    AND p.string2 = pr.string2 
    AND p.city = pr.city 
    AND p.zip = pr.zip 

이 쿼리가 반환 널 (NULL) :

Table_1 structure : 

id    VARCHAR (!2) - index 
string1   VARCHAR (15) 
string2   VARCHAR (50) 
string3   VARCHAR (20) 
city    VARCHAR (50) 
zip    VARCHAR (20) 


Table_2 structure : 


string1   VARCHAR (15) -- index 
string2   VARCHAR (50) -- index 
string3   VARCHAR (20) 
city    VARCHAR (50) 
zip    VARCHAR (20) 
id_1    int (6) 

나는 쿼리를 사용했다. 대부분의 행은이 두 테이블 모두에서 비교되는 열에 대해 동일한 데이터를 가지고 있습니다. 왜 이런 일이 발생하는지 이해하지 못합니다. 왜 이런 일이 일어나는 지, 왜 이런 일이 일어나는 지 말해 줄 수 있습니까?

데이터 모델 : 결과 예상

된 table_1

id_1 string1  string2 string3 city zip 
1  abc   cde   efg  ghi  00001-13 
2  cde   efg   abc  abc  00002  

id_2 string1  string2 string3 city zip 
3  abc   cde   efg  ghi  00001-13 
4  cde   efg   abc  abc  00002  
: 결과 얻어진

id_1 id_2 
1  3 
2  4 

:

id_1 id_2  
1  null 
2  null 
+0

'pr'부분은 쿼리에서 어디에 정의됩니까? – summea

+2

가입하십시오. 당신은 p.string1 = pr.string1이라고 말하고 있습니다. 이건 괜찮아; 너의 다음 부분을 보라. p.string1 = pr.string2. 둘 다 유효하지 않습니다. 당신은 p.string2 = pr.string2을 의미 했습니까? – ItalianStallion

+0

''table2' 다음에'pr' alias를 넣기 위해 질문을 편집해야합니다. –

답변

1
SELECT p.id, pr.id_1 
    FROM table_1 as p 
    LEFT JOIN table_2 as pr 
    ON p.string1 = pr.string1 
    AND p.string1 = pr.string2 
    AND p.city = pr.city 
    AND p.zip = pr.zip 
,

나는 더이 쿼리

demo

+0

쿼리에 오타가 있었기 때문에 업데이트했습니다. –

+0

이것이 간단한 문제가 아닌 이유입니다. 무슨 일이 일어나고 있는지 파악할 수 없습니다. –

+0

@RahulNair 테이블 덤프 (데이터 및 구조) 여기서 나를 혼란스럽게하는 – ghanbari

0
SELECT p.id, pr.id_1 
    FROM table_1 as p 
    LEFT JOIN table_2 as pr 
    ON p.string1 = pr.string1 
    AND p.string2 = pr.string2 
    AND p.city = pr.city 
    AND p.zip = pr.zip; 

이 쿼리 백퍼센트 정확한에서 문제를 볼 수 없습니다. 잘못된 산출물에 대한 이유가 없었습니다.

+0

에는 이러한 열에 숨겨진 문자가 있는지 또는이 두 테이블의 데이터를 비교하는 다른 도구가 있는지 확인하는 방법을 알고 있습니까? . –

+1

예, 숨겨진 공간이있을 수 있습니다. –