6. PHÂT BIỂU SQL DẠNG JOIN
6.2. Khâi niệm về mệnh đề JOIN
Trong hầu hết phât biểu SELECT, phần lớn kết quả mă bạn mong muốn lấy về đều có liín quan đến một hoặc nhiều bảng khâc nhau. Trong trường hợp như vậy, khi truy vấn dữ liệu bạn cần sử dụng mệnh đề JOIN để kết hợp dữ liệu trín hai hay nhiều bảng lại với nhau.
Khi sử dụng JOIN, bạn cần quan tđm đến trường (cột) năo trong bảng thứ nhất có quan hệ với trường (cột) năo trong bảng thứ hai. Nếu mô hình quan hệ của bạn không tối ưu hay không đúng, quản trình sử dụng JOIN sẽ cho kết quả trả về không như ý muốn.
Trở lại ứng dụng bân hăng qua mạng trong giâo trình năy, khi xuất một hợp đồng bân hăng cho khâch hăng, theo thiết kế trong cơ sở dữ liệu chúng ta có rất nhiều bảng liín quan đến nhau.
Chẳng hạn, nếu quan tđm bân hăng thì bân cho ai. Suy ra, liín quan đến thông tin khâch hăng, bân sản phẩm gì cho họ thì liín quan đến mê sản phẩm, nếu khâch hăng trả tiền thì liín quan đến phiếu thu, nếu khâch hăng có công nợ thì liín quan đến nợ kỳ trước...
Trong phđn năy, chúng tôi tiếp tục thiết kế một số bảng dữ liệu cùng với kiểu dữ liệu tương ứng vă quan hệ giữa câc bảng được mô tả như sau:
tblCustomers (danh sâch khâch hăng)
[CustID] int auto_increment Primary key, [CustName] [varchar] (50) NULL ,
[Address] [varchar] (100) NULL,
[Tel] [varchar] (20) NULL, [FaxNo] [varchar] (20) NULL, [Email] [varchar] (50) NULL, [Contact] [varchar] (50) NULL [Country] [varchar] (3) NULL, [Province] [varchar] (3) NULL tblOrders (Hợp đồng bân hăng)
[OrderID] [int] Not null
auto_increment Primary Key, [OrderDate] [date] NULL ,
[CustID] int ,
[Description] [varchar] (200) NULL , [ShipCost] [float] NULL ,
[TranID] [tinyint] NULL , [PaymentID] [tinyint] NULL , [Amount] [float] NULL , [TotalAmount] [float] NULL ,
tblOrderDetails (Hợp đồng bân hăng chi tiết) [SubID] [int] auto_increment NOT NULL , [OrderID] int ,
[ItemID] int, [No] int,
[Qtty] [int] NULL , [Price] int NULL ,
[Discount] [Float] NULL , [Amount] [Float] NULL tblItems (Danh sâch sản phẩm)
[ItemID] int auto_increment Primary key, [ItemName] [varchar] (200) NULL ,
[Unit] [nvarchar] (20) NULL , [Cost] [Float] NULL ,
[Active] [tinyint] NOT NULL , [Category] int
Bạn có thể tìm thấy câc bảng dữ liệu còn lại trong dữ liệu Test trong đĩa đính kỉm theo sâch.