24/05/2018, 17:32

Using Joins

Trong phần này chúng ta sẽ tìm hiểu về các loại Join trong SQL Server. Bằng cách sử dụng JOIN bạn có thể select data từ nhiều table dựa trên mối quan hệ logic giữa các table (logical relationships). Có thể tóm tắt các loại Join thông dụng bằng các hình sau: ...

Trong phần này chúng ta sẽ tìm hiểu về các loại Join trong SQL Server. Bằng cách sử dụng JOIN bạn có thể select data từ nhiều table dựa trên mối quan hệ logic giữa các table (logical relationships). Có thể tóm tắt các loại Join thông dụng bằng các hình sau:

Thứ tự từ trái sang phải: Inner Join, Left Outer Join, Right Outer Join, Full Outer Join

Dùng Inner Join để select data từ 2 hay nhiều tables trong đó giá trị của các cột được join phải xuất hiện ở  cả 2 tables tức là phần gạch chéo trên hình. Ví dụ:

SELECT t.Title, p.Pub_name

FROM Publishers AS p INNER JOIN Titles AS t

ON p.Pub_id = t.Pub_id

ORDER BY Title ASC

Dùng Left Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ nhất và không tồn tại bên table thứ hai sẽ được select cộng với các giá trị của các cột được inner join. Số cột select được sẽ bằng với số cột của table thứ nhất. Tức là phần tô màu đỏ trên hình.  Ví dụ:

USE Pubs

SELECT a.Au_fname, a.Au_lname, p.Pub_name

FROM Authors a LEFT OUTER JOIN Publishers p

ON a.City = p.City

ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

Dùng Right Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ hai và không tồn tại bên table thứ nhất sẽ được select cộng với các giá trị của các cột được inner join. Số cột select được sẽ bằng với số cột của table thứ hai. Tức là phần tô màu đỏ trên hình.  Ví dụ:

USE Pubs

SELECT a.Au_fname, a.Au_lname, p.Pub_name

FROM Authors a RIGHT OUTER JOIN Publishers p

ON a.City = p.City

ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

Dùng Full Outer Join để select data từ 2 hay nhiều tables trong đó tất cả cột bên table thứ nhất và thứ hai đều được chọn các giá trị bên hai table bằng nhau thì chỉ lấy một lần. Tức là phần tô màu đỏ trên hình.  Ví dụ:

USE Pubs

SELECT a.Au_fname, a.Au_lname, p.Pub_name

FROM Authors a FULL OUTER JOIN Publishers p

ON a.City = p.City

ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

Dùng Cross Join ghép data từ hai table trong đó số hàng thu được bằng với số hàng của table thứ nhất nhân với số hàng của table thứ hai.  Ví dụ:

USE pubs

SELECT au_fname, au_lname, pub_name

FROM authors CROSS JOIN publishers

WHERE authors.city = publishers.city

ORDER BY au_lname DESC

Ðể ý là trong câu lệnh này không có keyword "On".

Muốn hiểu rõ hơn về các loại join bạn cho chạy thử trên SQL Server và làm phần bài tập số 1.

Tóm lại trong bài này chúng ta đã tìm hiểu data integrity trong SQL Server bằng cách dùng các loại Constraint. Ngoài ra Chúng ta cũng biết qua về một số kỹ thuật query nâng cao. Sau bài học này các bạn cần làm bài tập số 1 để hệ thống hóa lại kiến thức đã học từ bài 1 đến bài 5 trước khi bạn học tiếp bài số 6. Khi làm bài tập nhớ phải làm theo thứ tự và tuân thủ theo các yêu cầu của bài tập đặt ra. Không nên bỏ qua bước nào.

0