2013-08-29 3 views
0

Я использую следующую команду sql для поиска некоторых записей.Informix sql поиск внешних таблиц соединения

select con.type, con.contract_id, con.account, chk.account, chk.check_flags 
from contract_scan_image con, outer check_customer_info chk 
where con.type='AP' and con.account=chk.account 

и получил результат, как указано ниже.

type contract_id account  account  check_flags      

AP 1413178  03071800181            
AP 1413774  03071800569            
AP 1414218  03071800810            
AP 1415937  03071900602 03071900602 000000222010000000000000000000 
AP 1417948  03072000524 03072000524 000000222010000000000000000000 
AP 1417999  03072000555            
AP 1418203  03072000667 03072000667 000000222010000000000000000000 
AP 1418216  03072000672 03072000672 000000220010000000000000000000 
...... 

Почему записи все еще найдены, даже если в поле «ничего не найдено» из таблицы?

+1

Потому что это именно то, что 'OUTER' присоединиться делает; сохраняет строки, даже если не было соответствия. Если вам нужны только результаты, в которых есть совпадение, используйте 'INNER JOIN' * (Кроме того, я настоятельно рекомендую не использовать нотацию«, »для объединений, поскольку она была заменена стандартом ANSI92, как в 1992 году, более 20 лет назад ... Поиск в Интернете для 'INNER JOIN') * – MatBailie

+0

Получил подарок. Это все мое понятие неправильно ... Тем не менее, я нашел, что sytax внутреннего соединения в informix должен быть таким: выберите con.type, con.contract_id, con.account, chk.account, chk.check_flags from contract_scan_image con , check_customer_info chk где con.type = 'AP' и con.account = chk.account – Johnny

+0

Вы уверены, что INFORMIX не поддерживает INNER JOIN? Это синтаксис, введенный с 1992 года ... – MatBailie

ответ

1

причина вы используете внешнее соединение, которое принесет строку в первой таблице, даже если там нет совпадения с другой таблицей попробовать writign в Постулаты как этот

select con.type, con.contract_id, con.account, chk.account, chk.check_flags 
from contract_scan_image con inner join check_customer_info chk on con .account = chk.account 
where con.type='AP' 
+0

Да, это все мое понятие неправильно ... Однако, см. Мой комментарий выше для sytax informix для внутреннего соединения. Спасибо. – Johnny

Смежные вопросы