Sử dụng JOINS để truy xuất dữ liệ u

Một phần của tài liệu Tài liệu TÀI LIỆU MICROSOFT SQL SERVER 2000 doc (Trang 69 - 71)

Bằng JOIN, chúng ta cĩ thể lấy dữ liệu từ hai hoặc nhiều bảng dựa trên mối quan hệ giữa các bảng. Tuy nhiên nếu ta khơng thích dùng Join để lấy dữ liệu thì bạn cũng cĩ thể viết các câu truy vấn bằng dạng truy vấn con (Subqueries). Dùng Joins thì tốc độ thực hiện của câu truy nhanh hơn SubQueries nhưng lại khĩ hiểu hơn. Trong một truy vấn tham chiếu đến nhiều table, thì tất cả các cột phải được chỉ rõ một các tường minh là cột đĩ lấy từ table nào.

Thơng thường thì điều kiện kết nối là dùng phép so sánh bằng, nhưng trong SQL Server ta cĩ thểđịnh nghĩa mối quan hệ giữa trên các tốn tử khác như <>, >, >=, <, <= … Các cột được dùng để kết nối khơng nhất thiết phải cùng tên hay cùng kiểu dữ liệu. Nếu kiểu dữ liệu khác nhau thì cĩ thể dùng các hàm để chuyển đồi kiểu dữ liệu.

Gồm hai loại Joins chính: INNER JOINS và OUTER JOINS. Tuynhiên ta cịn cĩ thể tạo một dạng Join khác như CROSS-JOINS và SELF-JOINS.

Inner Joins: Liên kết Inner Joins chỉ trả về những mẫu tin đều hiển hữu ở cả hai bảng quan hệ và phải thỏa mãn điều kiện kết.

Ví dụ:

SELECT Em.EmployeeID,LastName+ ' '+FirstName AS EmployeeName,

COUNT(OrderID) AS TotalOrders

FROM Employees AS Em INNER JOIN Orders AS O ON Em.EmployeeID=O.EmployeeID

WHERE MONTH(OrderDate)=8 AND YEAR(Orderdate)=1996 GROUP BY Em.EmployeeID,LastName+ ' '+FirstName ORDER BY Em.EmployeeID

Điều kiện kết nằm ở mệnh đề Where

SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S, Products AS P

WHERE S.SupplierID = P.SupplierID AND P.UnitPrice > $10

AND S.CompanyName LIKE N'F%'

Điều kiện kết nằm ở mệnh đề From

SELECT P.ProductID, S.SupplierID, S.CompanyName FROM Suppliers AS S JOIN Products AS P

ON (S.SupplierID = P.SupplierID) WHERE P.UnitPrice > $10

AND S.CompanyName LIKE N'F%'

Outer Joins: trả về tất cả những mẫu tin nằm ít nhất một bảng nào đĩ trong các bảng tham gia kết nối và cũng phải thoảđiều kiện kết. Outer Joins cung cấp 3 kiểu outer Join: Left, Right, và Full. Trả về tất cả các dịng từ bảng bên trái mà được tham chiếu từ Left Outer Joins. Trả về tất cả các dịng từ bảng bên phải mà được tham chiếu từ Right Outer Joins. Trả về tất cả các dịng từ cả 2 bảng mà được tham chiếu từ Full Outer Joins.

Ví dụ : Dùng câu truy vấn sau và lần lượt thay đổi kiểu Join (Inner, Left, Right, Full), cho thi hành và cho nhận xét kết quả của câu truy vấn. Tự rút ra kết luận

FROM Orders O LEFT JOIN Customers C ON O.CustomerID = C.CustomerID AND O.ShipCity=C.City

ORDER BY O.OrderID

Cross Jions: Mỗi dịng trong tất cả các dịng của bảng bên trái sẽ kết hợp với tất cả các dịng của bảng bên phải. Giả sử X, Y là số dịng của bảng bên trái và bên phải, thì tập kết quả sau khi Cross Join cĩ X*Y dịng.

Sefl Joins: Tự liên kết

Một phần của tài liệu Tài liệu TÀI LIỆU MICROSOFT SQL SERVER 2000 doc (Trang 69 - 71)