inner joins in oracle
I would agree that it is not consistent.
But I would argue that the Oracle implementation is a good thing:
- when you do a join, you almost always want to include a filter condition, therefore the
ON
part is mandatory. - If you really, really don't want to have a filter condition (are you really sure?), you have to tell Oracle explicitly with
CROSS JOIN
sytax.
Makes a lot of sense to me not to be 100% consistent - it helps to avoid you mistakes.
Oracle also supports the natural join syntax, which joins two tables on the basis of shared column name(s). This would work in your case because both tables have a column called LOAN_NUMBER.
SELECT *FROM LoanNATURAL JOIN Borrower
Now, your same argument could be made in this case, that the use of the keyword natural is strictly unnecessary. But if we follow the logic we end up with a situation in which this statement could be either a cross join or a natural join, depending on the column names:
SELECT *FROM LoanJOIN Borrower
This is clearly undesirable, if only because renaming LOAN.LOAN_NUMBER to LOAN_ID would change the result set.
So, there's your answer: disambiguation.