У меня возникают проблемы с предложением OR. Я пытаюсь соединить две большие таблицы и приведены ниже выборки данных из таблицПроблемы с предложением OR
Table1 (t1)
vendor addr1 city zip
ADT PO BOX 371956 PITSBURGH 15250
Table2 (t2)
vendor addr1 city zip
ADT PO Box 371956 Pittsburgh 15250-7956
первые два оператора выбора, приведенные ниже, отображают одну строку данных из двух таблиц. В третьем выборе у меня есть предложение OR, и это не отображает строки. Предложение OR не должно влиять на набор результатов.
select *
from t1
left join t2
on t1.addr1 = t2.addr1
select *
from t1
left join t2
on t1.addr1 = t2.addr1
and (t1.city = t2.city)
Подборка ниже не содержит данных. ЗАЧЕМ?
select *
from t1
left join t2
on t1.addr1 = t2.addr1
and ((t1.city = t2.city) or (t1.zip = t2.zip))
Первое, что я замечаю, это то, что ваш или оператор сравнивает молнии и города, в то время как ваши предыдущие утверждения сравнивают города и адреса. Почтовые индексы ваших таблиц не кажутся одинаковыми (в таблице нет дефисной части), и ни один из них не является городами (Pit vs. Pitt в орфографии для одной вещи). Если это фактические данные, это потому, что данные не совпадают. – user2912928
Но это предложение OR, и с момента совпадения в городе не имеет значения, совпадает ли совпадение или нет – stackuser