2014-09-12 4 views
0

У меня есть две таблицы в mysql, когда я попытался присоединиться к этим двум таблицам на основе общих столбцов, он вернул null, даже когда значения в столбцах в обеих этих таблицах были одинаковыми.Таблица join in mysql return 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) 

Я использовал запрос:

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 для ID_1. Большинство строк имеют одинаковые данные для столбцов, сравниваемых в обеих этих таблицах, я не понимаю, почему это происходит. Может кто-нибудь, пожалуйста, скажите мне, почему это происходит и почему это происходит.

Модель данных:

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

Вы должны отредактировать вопрос, чтобы поместить псевдоним 'pr' после' table2'. –

ответ

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 Dump Your Tables (Данные и структура) Здесь – 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

Да, это должна быть возможность, возможно, какие-то скрытые пространства там. –