Forget about having Oracle R12 suite. In general any Oracle engine will behave like this. Let me show you some examples.
TABLE A
- COL1 PK1
- COL2 PK1
- COL3
TABLE B
- COL4 PK2
- COL5 PK2
- COL6
TABLE C
- COL7
- COL8 -PK3
- COL9 -PK3
In this model, whenever we join any tables unless you join on their key combinations or based on the rule that for any given row you retrieve a maximum of one row from the other table.
SELECT A.COL1
FROM TABLEA, TABLEB
WHERE COL1 = COL4
AND COL2 = COL5;
OR in ANSI syntax
SELECT A.COL1
FROM TABLEA
JOIN TABLEB ON COL1 = COL4 AND COL2 = COL5;
So this can be extended on the third table.
SELECT A.COL1
FROM TABLEA, TABLEB, TABLEC
WHERE COL1 = COL4
AND COL2 = COL5
AND COL1 = COL8
AND COL2 = COL9;
PS: The assumption is that the combined primary key on both the tables will always provide one row for the other.
You need to extend your ON clauses to include a condition so that for each entry in TABLE A there is only one entry in TABLE B that matches the condition and that for each entry in TABLE B there is only one entry in TABLE C
You can always try to join tables one by one and keep the query building until and unless you done violate the thumb rule (said above).
If, I change the join condition and any table duplicates while performing the same, then the same will be propagated to the subsequent joins.