Chào mừng đến với BIS Đăng nhập | Đăng ký | Trợ giúp
trong Tìm kiếm

Các loại phép nối trong SQL (Join types in SQL)

Bài cuối 09-19-2014 04:51 PM của chucnv. 0 trả lời.
Trang 1 trong số 1 (1 nội dung)
Sắp xếp bài viết: Trước Tiếp theo
  • 09-19-2014 04:51 PM

    • chucnv
    • 10 thành viên năng nổ nhất
    • Tham gia 12-05-2008
    • Điểm 28,320

    Các loại phép nối trong SQL (Join types in SQL)

    Các loại phép nối trong SQL (Join types in SQL)

    chuc1803@gmail.com

    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

    Create table Employees(id int identity(1,1) primary key, Ename varchar(50), DeptID int)

    Create table Departments(id int identity(1,1) primary key, DeptName varchar(50))  

    Giả sử dữ liệu trong 2 bảng đã tạo như sau:

    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

    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 (=).

    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:

    1.     Left outer join

    2.     Right outer join

    3.     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

    b) Right outer join

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

    3) 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

    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.

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

    SELECT * FROM Employees, Departments

     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
    Giả sử có bảng hàng hóa (ITEMS) với dữ liệu như sau

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

    • Điểm chủ đề: 20
Trang 1 trong số 1 (1 nội dung)
Powered by Community Server (Commercial Edition), by Telligent Systems