sql >> Database teknologi >  >> RDS >> Oracle

Oracle-syntaks venstre forbinder tre eller flere tabeller

Du kan se det på en overlappende måde. Nøglen er dog at se efter de tabeller, der er venstre og højre forbundet i den samme forespørgsel. I dette tilfælde er rækkefølgen anderledes:betingelsen, hvor bordet er rigtigt sammenføjet, anvendes først. Jeg håber, at følgende diagram vil kaste lidt lys over dette:

Du kan også kontrollere rækkefølgen af ​​disse joinforbindelser ved at se på udførelsesplanen for forespørgslen:

For 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 |       |       |          |
------------------------------------------------------------------------

For Q2:

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 |       |       |          |
------------------------------------------------------------------------


  1. Filtrering af en lagret procedures resultatsæt

  2. Ændring af sql-server DB fra tabelform til multidimensionel

  3. Sådan får du id'et for en række, jeg har lige indsat php/mysql

  4. datetimeoffset hibernate mapping