Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Lewa składnia Oracle łączy trzy lub więcej tabel

Możesz to zobaczyć w sposób kaskadowy. Kluczem jest jednak wyszukanie tych tabel, które są połączone z lewej i prawej strony w ramach tego samego zapytania. W tym przypadku kolejność jest inna:warunek, w którym tabela jest połączona w prawo, jest stosowany jako pierwszy. Mam nadzieję, że poniższy diagram rzuci trochę światła na to:

Możesz również sprawdzić kolejność tych złączeń, patrząc na plan wykonania zapytania:

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

Dla 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwersja z ANSI do składni łączenia Oracle

  2. Jak generować instrukcje DELETE w PL/SQL na podstawie relacji FK tabel?

  3. Wybierz listę wierzchołków Oracle i ukryj wartości

  4. Zainstaluj klienta Oracle Instant w kontenerze Docker dla Pythona cx_Oracle

  5. Jak dodawać i usuwać tagi xml istniejących danych w kolumnie xmltype w oracle?