TRUY XUẤT NHỮNGHÀNG TỪ NHIỀU BÃNG:

Một phần của tài liệu Mastering C# Database Programming pot (Trang 67 - 69)

Cho đến lúc này bạn đã được nhìn thấy những phát biểu SELECT truy xuất những hàng từ chỉ một bảng cho một lần thực thi. Bạn sẽ luôn luôn cần truy xuất những hàng từ nhiều bảng sử dụng cùng mộtphát biểu SELECT.

Thí dụ: bạn có thể muốn thấy tất cả những đơn đặt của một khách hàng. Để thực kiện điều này ,bạn phải chỉ định cả hai bảng Customers và Orders sau từ khóa FROM trong phát biểu SELECT và sử dụng a table join

trong mệnh đề WHERE.

Bạn cũng phải chỉđịnh tên của bảng khi tham chiếu đến những cột cùng tên trong cả hai bảng. phát biểu SELCET

Sau đây trinh bày và truy xuất những đơn đặt của khách hàng với CustomerID là ALFKI:

SELECT Customers.CustomerID, CompanyName, Address, OrderID, ShipAddress FROM Customers, Orders

WHERE Customers.CustomerID = Orders.CustomerID AND Customers.CustomerID = 'ALFKI';

Chú ý rằng bảng Customers và Orders được chỉđịnh sau từ khóa FROM, bởi vì cả hai bảng đều chứa cột có tên là CustomerID, tên bảng được đặt trước mỗi tham chiếu đến cột tương ứng trong mỗi bảng. sự nối bảng được thự hiện trên cột CustomerID cho mỗi bảng (Customers.CustomerID = Orders.SustomerID ).

Hình 3.21 trình bày những kết quả của phát biểu SELECT này.

Phát biểu SELECT trước sử dụng định dạng tiêu chuẩn SQL cho việc liên kết những bảng. với SQL Server, bạn cũng có thể sử dụng từ khóa JOIN cho việc liên kế những bảng. lợi thế của từ khóa JOIN là bạn có thể sử dụng nó để thực hiện những kết nối ngòai. Bạn sẽ học đến ngay sau đây. Đây là một thí dụ nó viết lại những phát biểu SELECT trước sử dụng từ khóa JOIN :

SELECT Customers.CustomerID, CompanyName, Address, OrderID, ShipAddress

FROM Customers

JOIN Orders

ON Customers.CustomerID = Orders.CustomerID AND Customers.CustomerID = 'ALFKI';

Sự bất lợi của hai phát biểu SELECT trước là chúng trả về những hàng chỉ khi cả hai cột liên kết có một giá trị. Nghĩa là ,

Không một cột nào chứa giá trị NULL. Đều này có thể gây ra một lỗi nếu bạn có những hàng có một giá trị

NULL trong

cả những cột sử dụng trong liên kết và bạn muốn thực sự truy xuất những hàng đó .những liên kết ngòai (Outer Jions)

giải quyết vấn đề này .sau đây là ba kiểu Outer Joins :

LEFT OUTER JOIN: (luôn được rút ngắn tới LIÊN KẾT TRÁI ) trả về tất cả những hàng từ bảng phía bên trái của liên kết, bao gồm cả những hàng có một cột chứa giá trị NULL.

RIGHT OUTER JOIN : (luôn được rút ngắn tới LIÊN KẾT PHẢI ) trả về tất cả những hàng từ một bảng phía bên phải liên kết, bao gồm cả những hàng có một cốt chứa giá trị NULL.

FULL OUTER JOIN : (luôn được rút ngắn tới LIÊN KẾT ĐẦY ) trả về tất cả những hàng từ những bảng phía phải và cả phía trái cua liên kết, bao gồm những hàng có một cột có giá trị NULL.

chúng ta hãy xem cặp thí dụ dưới đây. Đầu tiên thực hiện phát biểu INSERT để thêm một hàng vào bảng Products:

INSERT INTO Products (ProductName, SupplierID) VALUES ('DVD Player', NULL);

Chú thích : bạn sẽ học chi tiết về phát biểu INSERT sau cũng trong chương này.

Bạn không cần phải chỉđịnh cột ProducID bởi vì SQL Server sẽ tựđộng cung cấp một giá trị sử dụng một phương thức đặt mã khoá tựđộng. Sự nhận dạnh này được thành lập khi bảng Products được tạo ra, và phương thức đặt mã khoá tựđộng sẽ phát sinh một loạt những giá trị ,giá trịđược phát sinh lần đầu tiên khi được gọi là 1 và được tăng lên một đơn vị với mội lần gọi tiếp theo. Thí dụ ,cột ProductID từ lúc đầu nhập liệu đến giờđã chứa một loạt những giá trị từ 1 đến 77 ( 77 hàng) do đó phát biểu INSERT tiếp theo sẽ thêm một hàng vào bảng Products phương thức đặt mã khoá tựđộng sẽđặt giá trị cho cột ProductID của dòng mới này là 78 .

Bạn chú ý là cột SupplierID trong phát biểu INSERT này là NULL. Nếu bây giờ bạn thực hiện phát biểu SELECT tiếp sau, bạn sẽ không nhìn thấy hàng mới vừa INSERT boởi vì cột SupplierID của hàng mới này là NULL và do đó từ khoá JOIN trong phát biểu không thực hiện được :

SELECT ProductID

FROM Products

JOIN Suppliers

ON Products.SupplierID = Suppliers.SupplierID;

Để thấy được hàng mới này , bạn sử dụng LEFT JOIN trong phát biểu SELECT để truy xuất tất cả những hàng từ bảng bên trái từ khoá LEFT JOIN ( trong trường hợp này , là bảng Products):

SELECT ProductID

FROM Products

LEFT JOIN Suppliers

ON Products.SupplierID = Suppliers.SupplierID;

Bạn cũng có thể sử dụng LEFT JOIN với từ khoá IS NULL trong phát biểu SELECT để chỉ truy xuất hàng mới này:

SELECT ProductID

FROM Products

ON Products.SupplierID = Suppliers.SupplierID WHERE Products.SupplierID IS NULL;

Một phần của tài liệu Mastering C# Database Programming pot (Trang 67 - 69)

Tải bản đầy đủ (PDF)

(151 trang)