Thứ Hai, 24 tháng 7, 2023

Outer Join trong Oracle

Ở bài trước mình đã giới thiệu Inner Join trong Oracle rồi, vậy thì bài này mình sẽ nói về một thể loại join Join khác đó là Outer. Chúng ta sẽ tìm hiểu ba thể loại Outer Join, thứ nhất là Left Outer Join, thứ hai là Right Outer Join và cuối cùng là Full Outer Join.

Mục lục

  • 1. Left Outer Join trong Oracle
  • 2. Right Oter Join trong Oracle
  • 3. Full Outer Join trong Oracle
  • 4. Lời kết

1. Left Outer Join trong Oracle

Left Outer Join là phép kết giữa hai bảng, kết quả trả về sẽ như sau: Bảng thứ nhất (phía bên trái) sẽ lấy tất cả record cho dù có thỏa điều kiện ở ON hay không, còn bảng thứ hai (phía bên phải) thì chỉ lấy những record nào thỏa điều kiện ở ON. Những column nào không thỏa điều kiện ON sẽ có giá trị NULL.

Bạn xem hình sẽ dể hiểu hơn:



Theo nguyên tắc thì tổng số column trả về sẽ là của cả hai bảng, và do một số record ở table1 không kết được với dữ liệu ở table2 nên những record đó vẫn chứa những column ở table2 nhưng dữ liệu của nó sẽ là NULL.

Cú pháp
1
2
3
4
SELECT columns 
FROM table1 
LEFT [OUTER] JOIN table2 
ON table1.column = table2.column;

Ví dụ
1
2
3
4
SELECT suppliers.supplier_id, suppliers.supplier_name, order1.order_number 
FROM suppliers 
LEFT OUTER JOIN order1 
ON suppliers.supplier_id = order1.supplier_id;

Giả sử kết quả của lệnh này sẽ như sau:



Như trong hình thì do bảng suppliers là bảng phía bên trái nên nó được chỉ định là lấy tất cả, còn bảng order1 là bảng bên phải nên chỉ lấy những record thỏa điều kiện ở ON, vì vậy dữ liệu của các column nằm trong bảng order1 bị rỗng.

2. Right Oter Join trong Oracle

Ngược lại với Left Outer Join, lệnh này sẽ lấy tât cả record ở bảng thứ hai (bảng bên phải) và chỉ những record thỏa điều kiện ON ở bảng thứ nhất (bảng bên trái). Column nào không thỏa điều kiện ON sẽ có giá trị NULL



Cú pháp
1
2
3
4
SELECT columns 
FROM table1 
RIGHT [OUTER] JOIN table2 
ON table1.column = table2.column;

Ví dụ
1
2
3
4
SELECT order1.order_number, order1.city, suppliers.supplier_name 
FROM suppliers 
RIGHT OUTER JOIN order1 
ON suppliers.supplier_id = order1.supplier_id;

3. Full Outer Join trong Oracle

Full Outer Join sẽ là hợp của cả Lef Outer Join và Right Outer Join, nghĩa là nó sẽ lấy tất cả các record ở bảng thứ nhất lẫn bảng thứ hai. Column nào không thỏa điều kiện ở ON sẽ có giá trị NULL.



Cú pháp
1
2
3
4
SELECT columns 
FROM table1 
FULL [OUTER] JOIN table2 
ON table1.column = table2.column;

Ví dụ
1
2
3
4
SELECT suppliers.supplier_id, suppliers.supplier_name, order1.order_number 
FROM suppliers 
FULL OUTER JOIN order1 
ON suppliers.supplier_id = order1.supplier_id;

4. Lời kết

Đối với lệnh JOIN này thì bạn phải tự thực hành trên chính CSDL của bạn thì mới dễ hiểu, vì vậy cố gắng viết thật nhiều câu SQL, chạy và xem kết quả nhé.

Bài tiếp theo mình sẽ giới thiệu về Self Join, đây không phải là là lệnh gì đặc biệt mà nó chỉ là cách sử dụng JOIN trên cùng một table.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master