Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Left Outer Tham gia bằng cách sử dụng + đăng nhập Oracle 11g

TableA LEFT OUTER JOIN TableB tương đương với TableB RIGHT OUTER JOIN Table A .

Trong Oracle, (+) biểu thị bảng "tùy chọn" trong JOIN. Vì vậy, trong truy vấn đầu tiên của bạn, đó là P LEFT OUTER JOIN S . Trong truy vấn thứ hai của bạn, đó là S RIGHT OUTER JOIN P . Chúng tương đương về mặt chức năng.

Trong thuật ngữ, RIGHT hoặc LEFT chỉ định bên nào của phép nối luôn có bản ghi và bên kia có thể là rỗng. Vì vậy, trong một P LEFT OUTER JOIN S , P sẽ luôn có một bản ghi vì nó nằm trên LEFT , nhưng S có thể là rỗng.

Xem ví dụ này từ java2s.com để được giải thích thêm.

Để làm rõ, tôi đoán tôi đang nói rằng thuật ngữ không quan trọng, vì nó chỉ ở đó để giúp hình dung. Điều quan trọng là bạn hiểu khái niệm về cách nó hoạt động.

RIGHT so với LEFT

Tôi đã thấy một số nhầm lẫn về những gì quan trọng trong việc xác định RIGHT và LEFT trong cú pháp kết hợp ngầm định.

THAM GIA BÊN NGOÀI TRÁI

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

THAM GIA NGAY NGƯỜI RA ĐÚNG

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

Tất cả những gì tôi đã làm là hoán đổi các bên của các điều khoản trong mệnh đề WHERE, nhưng chúng vẫn tương đương về mặt chức năng. (Xem phần cao hơn trong câu trả lời của tôi để biết thêm thông tin về điều đó.) Vị trí của (+) xác định RIGHT hoặc LEFT. (Cụ thể, nếu (+) ở bên phải, đó là THAM GIA TRÁI. Nếu (+) ở bên trái, đó là THAM GIA PHẢI.)

Các loại tham gia

Hai kiểu của JOIN là JOIN ngầm THAM GIA rõ ràng . Chúng là các kiểu viết JOIN khác nhau, nhưng chúng tương đương nhau về mặt chức năng.

Xem câu hỏi SO này .

THAM GIA ngầm định chỉ cần liệt kê tất cả các bảng với nhau. Các điều kiện tham gia được chỉ định trong mệnh đề WHERE.

THAM GIA ngầm định

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

THAM GIA rõ ràng liên kết các điều kiện tham gia với bao gồm của một bảng cụ thể thay vì trong mệnh đề WHERE.

THAM GIA rõ ràng

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

Các lệnh này có thể khó đọc và hiểu hơn, và chúng cũng có một vài hạn chế vì các điều kiện kết hợp được trộn lẫn với các điều kiện WHERE khác. Do đó, các JOIN ngầm thường được khuyến nghị không sử dụng vì cú pháp rõ ràng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle và Pagination

  2. Chèn chuỗi kiểm tra BLOB lớn hơn 2000 hoặc 4000 byte

  3. ORA-02298 Không tìm thấy khóa chính?

  4. Tạo một hàm pl / sql và tìm năm nhuận

  5. Cách lấy phần tử đầu tiên bằng XPath trong Oracle