Phép Join trong SQL

Phép nối (join) được sử dụng để kết hợp các dòng dữ liệu giữa các bảng.Trong SQL có các loại nối như sau:
• Inner Join (Equi-join, Natural Join )
• Outer Join (Left outer Join, Right outer join, Full outer join)
• Cross Join
• Self Join
Để minh họa, ta sử dụng 2 bảng Employees và Departments như sau:

20140919163112487 20140919163139785

 

1)Inner Join

Inner join chỉ hiển thị những dòng dữ liệu được so khớp (match) ở trong cả 2 bảng

 

111

Equi-Join

Equi join  là phép nối mà trong đó điều kiện nối chỉ thực thực hiện phép so sánh bằng (=)

 

112

2)Outer Join

Outer join trả về tất cả các dòng của cả 2 bảng cho dù các dòng dữ liệu có được so khớp (match) hay không

outer join có 3 loại sau:

  • Left outer join
  • Right outer join
  • Full outer join

a) Left Outer join

Hiển thị tất cả các dòng trong bảng đầu tiên (bên trái phép nối), các dòng trong bảng thứ 2 nếu không so khớp sẽ nhận giá trị null

 

113

b) Right outer join

Ngược lại với Left Outer Join

 

 

114

c) Full outer join

Hiển thị tất cả các dòng trong cả 2 bảng cho dù dữ liệu có được so khớp (match) hay không

 

115

 

3) Cross Join

Cross join  là phép tích đề các  (Cartesian Product) giữa các dòng dữ liệu trong 2 bảng. Kích thước của Cross Join là n*m. Trong đó, n và m là số dòng dữ liệu của 2 bảng.

 

116

Chú ý: Cross join có thể viết lại đơn giản như sau

 

 4) Self Join

Self Join là phép nối 1 bảng với chính nó, Self Join thường được sử dụng khi muốn trích xuất những dòng dữ liệu có mối quan hệ hoặc tương tự với các dòng dữ liệu khác trong cùng một bảng. Vì vậy, ta phải sử dụng các bí danh (alias) khác nhau cho cùng 1 bảng.

Truy vấn sau đây đưa ra các nhân viên có ID trùng với DeptID

 

117

Giả sử có bảng hàng hóa (ITEMS) với dữ liệu như sau:

 

118

Yêu cầu: Giảm giá 2 mặt hàng có giá cao nhất xuống 10%

 

119

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">