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

Left Outer Join za pomocą znaku + w Oracle 11g

TableA LEFT OUTER JOIN TableB jest odpowiednikiem TableB RIGHT OUTER JOIN Table A .

W Oracle (+) oznacza „opcjonalną” tabelę w JOIN. Tak więc w pierwszym zapytaniu jest to P LEFT OUTER JOIN S . W drugim zapytaniu jest to S RIGHT OUTER JOIN P . Są funkcjonalnie równoważne.

W terminologii RIGHT lub LEFT określają, która strona złączenia zawsze ma rekord, a druga strona może mieć wartość NULL. Tak więc w P LEFT OUTER JOIN S , P zawsze będzie miał rekord, ponieważ znajduje się po LEFT , ale S może być zerowa.

Zobacz ten przykład z java2s.com dodatkowe wyjaśnienia.

Aby wyjaśnić, myślę, że mówię, że terminologia nie ma znaczenia, ponieważ służy tylko wizualizacji. Liczy się to, że rozumiesz koncepcję tego, jak to działa.

PRAWY kontra LEWY

Widziałem pewne niejasności dotyczące tego, co ma znaczenie przy określaniu PRAWY vs LEWY w składni niejawnego sprzężenia.

LEWE ZŁĄCZE ZEWNĘTRZNE

SELECT *
FROM A, B
WHERE A.column = B.column(+)

PRAWY ZŁĄCZE ZEWNĘTRZNE

SELECT *
FROM A, B
WHERE B.column(+) = A.column

Wszystko, co zrobiłem, to zamieniłem strony terminów w klauzuli WHERE, ale nadal są one funkcjonalnie równoważne. (Zobacz wyżej w mojej odpowiedzi, aby uzyskać więcej informacji na ten temat.) Umieszczenie (+) określa PRAWY lub LEWY. (W szczególności, jeśli (+) jest po prawej, to LEFT JOIN. Jeśli (+) jest po lewej stronie, to WŁAŚCIWE DOŁĄCZENIE.)

Rodzaje JOIN

Dwa style JOIN to niejawne JOIN i wyraźne JOIN . Są to różne style pisania JOIN, ale są funkcjonalnie równoważne.

Zobacz to pytanie SO .

Niejawne JOIN po prostu wypisz wszystkie tabele razem. Warunki przyłączenia są określone w klauzuli WHERE.

Niejawne DOŁĄCZ

SELECT *
FROM A, B
WHERE A.column = B.column(+)

Wyraźne JOIN powiązać warunki łączenia z włączeniem określonej tabeli zamiast z klauzulą ​​WHERE.

Wyraźne DOŁĄCZ

SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column

Te niejawne sprzężenia mogą być trudniejsze do odczytania i zrozumienia, a także mają kilka ograniczeń, ponieważ warunki sprzężenia są mieszane w innych warunkach WHERE. W związku z tym niejawne JOIN są generalnie odradzane na rzecz jawnej składni.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wpływ EM SQL Monitor

  2. Jak naprawić błąd „Brak mapowania dialektu dla typu JDBC:-1” w javie?

  3. Oracle Blob jako img src na stronie PHP

  4. Grupowanie zmiennych binarnych według identyfikatora i dat min./maks.

  5. Funkcje ciągów Oracle (pełna lista)