Я думал о синтаксисе внутренних соединений в реализации SQL в Oracle, и вот то, что кажется немного противоречивое:внутренние соединения в оракула
Допустим, у вас есть два отношения кредита (loan_number, branch_name, количество) и заемщика (customer_name, loan_number). loan_number - это атрибут, общий для обеих таблиц. Теперь Oracle дает вам два способа выразить внутреннее соединение:
select *
from loan, borrower
where loan.loan_number = borrower.loan_number;
выше утверждение эквивалентно:
select *
from loan
inner join borrower
on loan.loan_number = borrower.loan_number;
Однако при выражении перекрестного соединения есть только один способ выразить это:
select *
from loan, borrower;
следующее выражение синтаксически неверно:
select *
from loan
inner join borrower;
Неверно; Oracle ожидает, что ON ... часть статьи
Учитывая, что внутреннее соединение - это просто крест-соединение с условием фильтрации, вы, ребята, думаете, что это несогласованность в реализации SQL Oracle? Я что-то упускаю? Мне было бы интересно услышать другие мнения. Благодарю.
Как Давид отметил в своем ответе синтаксис:
select *
from loan cross join borrower;
Несмотря на то, что я не знал, что предыдущий вариант синтаксиса я все еще думаю, что это непоследовательно. Наличие ключевого слова cross join в дополнение к разрешению внутреннего соединения без условия соединения будет прекрасным. Перекрестное объединение на самом деле является внутренним соединением без условия соединения, почему бы не выразить его как внутреннее соединение без условия соединения?
(a) Так как это стандарт SQL, определенный им, и (b), поскольку CROSS JOIN не содержит информации, которая не была в двух отдельных таблицах, обычно (но не всегда) расточительна и требует специального синтаксиса для вызова ресурсов «впустую». –
Что сказал Джонатан Леффлер, стандарт SQL явно определяет кросс-соединение. Вы делали предположение, что перекрестное присоединение является особой формой внутреннего соединения. –
@jhartelt крестовое соединение и внутреннее соединение являются и декартовыми продуктами, но внутреннее объединение фильтрует результаты. – neesh