2009-09-03 35 views
5

Tôi đang sử dụng Oracle SQL Developer để truy vấn một Oracle DB (không biết phiên bản đó là gì) và tôi sẽ sử dụng SQL mà tôi tạo cho một báo cáo Crystal. Nhiều báo cáo mà các nhà phát triển trước đã viết không sử dụng JOIN từ khóa để thực hiện các kết nối (và tôi không quá quen thuộc với JOIN từ khóa).(+) làm gì trong Oracle SQL?

Nhiều kết nối mà chúng tạo ra được thực hiện trong câu lệnh WHERE. Tôi sẽ nhận thấy một cái gì đó như thế này.

Select * From TableA, TableB WHERE TableA.PrimaryKey(+) = TableB.ForeignKey 

Câu hỏi của tôi liên quan đến (+). Mục đích của nó là gì và cách sử dụng nó trong mã của tôi?

Trả lời

8

Đó đại diện cho một “quyền bên ngoài tham gia” (phải vì = là ở phía bên phải của +).

SELECT * 
FROM TableA, TableB 
WHERE TableA.PrimaryKey(+) = TableB.ForeignKey 

tương đương với

SELECT * 
FROM TableA 
RIGHT OUTER JOIN TableB 
    ON (TableA.PrimaryKey = TableB.ForeignKey) 
0

(+) được sử dụng để thực hiện ngay bên ngoài tham gia trong Oracle RIGHT OUTER JOIN là một trong những hoạt động THAM GIA mà cho phép bạn chỉ định một điều khoản THAM GIA Để biết chi tiết http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj57522.html

+1

Liên kết bạn đã đăng ist ** not ** cho cơ sở dữ liệu Oracle dành cho ** JavaDB ** (aka "Derby") –

+0

Tôi đã thêm nhận xét đó để có ý tưởng rõ ràng về nội dung bên ngoài phù hợp –