Puoi vederlo in modo a cascata. Tuttavia, la chiave è cercare quelle tabelle che sono unite a sinistra ea destra all'interno della stessa query. In questo caso, l'ordine è diverso:viene applicata per prima la condizione in cui la tabella è unita a destra. Spero che il diagramma seguente faccia luce su questo:
Puoi anche controllare l'ordine di questi join guardando il piano di esecuzione della query:
Per Q1:
select a.c a, b.c b, c.c c from a, b, c where a.c = b.c (+) and
c.c = a.c (+)
------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | OMem | 1Mem | Used-Mem |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
|* 1 | HASH JOIN OUTER | | 4 | 2168K| 2168K| 805K (0)|
|* 2 | HASH JOIN OUTER | | 4 | 2616K| 2616K| 981K (0)|
| 3 | TABLE ACCESS FULL| C | 4 | | | |
| 4 | TABLE ACCESS FULL| A | 4 | | | |
| 5 | TABLE ACCESS FULL | B | 4 | | | |
------------------------------------------------------------------------
Per il secondo trimestre:
select a.c a, b.c b, c.c c from a, b, c where c.c = a.c (+) and
a.c = b.c (+)
------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | OMem | 1Mem | Used-Mem |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
|* 1 | HASH JOIN OUTER | | 4 | 2168K| 2168K| 801K (0)|
|* 2 | HASH JOIN OUTER | | 4 | 2616K| 2616K| 983K (0)|
| 3 | TABLE ACCESS FULL| C | 4 | | | |
| 4 | TABLE ACCESS FULL| A | 4 | | | |
| 5 | TABLE ACCESS FULL | B | 4 | | | |
------------------------------------------------------------------------