2014-09-30 2 views
2

Я хотел бы получить подробную информацию о том, какой тип соединения используется по этому запросу.Тип соединения, используемого при условии соединения, где пункт

select table1.column, table2.column 
from table1, table2 
where table1.key = table2.key 
and (some filter conditions) 
+1

Используйте явный синтаксис 'join', и вам не придется беспокоиться о таких деталях. –

+1

, когда вы это делаете, вы делаете INNER JOIN. – d34n5

+0

Я использую Oracle DB ... так же, как и внутреннее соединение ... ie select table1.column, table2.column from table1 inner join table2 где table1.key = table2.key и (некоторые условия фильтра) – user3514648

ответ

3

При использовании обозначения, как это:

table1,table2 вы строите потенциально CROSS JOIN но вы поставили в WHERE пункте условие table1.key = table2.key поэтому ваш CROSS JOIN становится INNER JOIN.

Я совет вам использовать явное обозначение о JOIN, вместо использования запятой, как ваш запрос написать это:

select table1.column, table2.column 
from table1 
inner join table2 
on table1.key = table2.key 
where (some filter conditions) 

Таким образом, вы exactely знать, какие JOIN вы хотите использовать и SQL синтаксического анализа, если вы miss some clause (as ON) предупреждает вас

+0

hy Joe ... thanx ... но когда я беру подсчет записей для обоих запросов itz, не соответствующих – user3514648

+0

@ user3514648: Пожалуйста, разместите ваш вопрос о COUNT –

+0

@ user3514648: Ответ Джо правильный, и его запрос делает именно то, что делает ваш запрос. Так что это должна быть ошибка с вашей стороны. –

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