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à một 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 phía nào của phép nối luôn có bản ghi và phía bên kia có thể là rỗng. Vì vậy, trong a P LEFT OUTER JOIN S
, P
sẽ luôn có một bản ghi vì nó ở trên LEFT
, nhưng S
có thể là null.
Xem ví dụ này từ java2s.com để biết thêm giải thích.
Để 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 ĐÚ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 chữ (+)
RIGHT hoặc LEFT xác định. (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 định và JOIN 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 chỉ đơn giản là liệt kê tất cả các bảng với nhau. Các điều kiện nối được chỉ định trong mệnh đề WHERE.
THAM GIA ngầm định
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Các JOIN rõ ràng liên kết các điều kiện tham gia với việc bao gồm 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 phép nối ngầm này có thể khó đọc và khó hiểu hơn, và chúng cũng có một số 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ị chống lại vì cú pháp rõ ràng.