Sử Dụng (+) để Outer Join Bảng Trong Oracle SQL | Dũng Vũ Blog

Giả sử ta có 2 bảng với dữ liệu như sau

SQL> select * from emp; EMP DEP JOB FIRST_NAME LAST_NAME SALARY --- ---  --- ---------- ---------- ---------- E01 D01  J01 名字1     名前1     100 E02 D01  J01 名前2     名前2     250 E03 D02  J02 名前3     名前3     200 E04 D02  J03 名前4     名前4     200 E05 D02  J03 名前5     名前5     130 E06 D03  J03 名前6     名前6     150
12345678910 SQL>select *from emp; EMP DEP JOB FIRST_NAME LAST_NAME SALARY------ ---------------------------------E01 D01 J01名字1    名前1    100E02 D01 J01名前2    名前2    250E03 D02 J02名前3    名前3    200E04 D02 J03名前4    名前4    200E05 D02 J03名前5    名前5    130E06 D03 J03名前6    名前6    150
SQL> select * from dept; DEP DEPT_NAME --- ---------- D01 総務部 D02 経理部 D04 営業部 D05 管理部
12345678 SQL>select *from dept; DEP DEPT_NAME--- ----------D01 総務部D02 経理部D04 営業部D05 管理部

Bây giờ ta sẽ lấy dữ liệu của bảng emp left join với bảng dept. Cách viết thông thường như sau:

SQL> select    a.emp_id, a.dept_id, b.dept_id, b.dept_name    from emp a    left outer join dept b    on (a.dept_id = b.dept_id ); EMP DEP DEP DEPT_NAME --- --- --- ---------- E01 D01 D01 総務部 E02 D01 D01 総務部 E03 D02 D02 経理部 E04 D02 D02 経理部 E05 D02 D02 経理部 E06 D03
1234567891011121314 SQL>select  a.emp_id,a.dept_id,b.dept_id,b.dept_name  from empa  left outer join deptb  on(a.dept_id=b.dept_id); EMP DEP DEP DEPT_NAME--- --- -------------E01 D01 D01 総務部E02 D01 D01 総務部E03 D02 D02 経理部E04 D02 D02 経理部E05 D02 D02 経理部E06 D03

Với cách viết sử dụng (+) trong oracle DB

SQL> select    a.emp_id, a.dept_id, b.dept_id, b.dept_name    from emp a,dept b    where    a.dept_id = b.dept_id (+); EMP DEP DEP DEPT_NAME --- --- --- ---------- E01 D01 D01 総務部 E02 D01 D01 総務部 E03 D02 D02 経理部 E04 D02 D02 経理部 E05 D02 D02 経理部 E06 D03
1234567891011121314 SQL>select  a.emp_id,a.dept_id,b.dept_id,b.dept_name  from empa,deptb  where  a.dept_id=b.dept_id(+); EMP DEP DEP DEPT_NAME--- --- -------------E01 D01 D01 総務部E02 D01 D01 総務部E03 D02 D02 経理部E04 D02 D02 経理部E05 D02 D02 経理部E06 D03

※ Lợi ích của việc sử dụng (+) khi viết query outer join đó là ko cần quan tâm thứ tự bảng. Ví dụ khi muốn bảng dept left join với emp (tương đương với emp right outer join với dept) thì ta chỉ cần đổi (+) sang vế trái (a.dept_id (+) = b.dept_id).

※Một ưu điểm nữa là khi outer join nhiều bảng với nhau sẽ viết nhanh hơn so với cách viết thông thường.

※Nhược điểm của cách viết này là không tường minh. Khi chưa quen sẽ rất dễ nhầm lẫn giữa left join và right join

Từ khóa » Join Nhiều Bảng Trong Oracle