I- With Grant Option
5. PHẮT BIỂU SQL
6.2. Khái niệm về mệnh đề JOIN
Trong hầu h ế t p h á t biểu SE LE C T, 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 đề J O IN để k ế t hợp dữ liệu trê n hai hay nhiều bảng lại với nhau.
Khi sử dụng JO IN , bạn cần quan tâm đến trường (cột) nào trong bảng thứ n h ấ 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ìn h sử dụng J O IN 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ìn h này, khi xuất m ột hợp đồng bán hàng cho khách hàng, theo th iế 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 p hân này, chúng tôi tiếp tục th iế 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
tblO rders (Hợp đồng bán hàng)
[OrderlD] [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 , [Anount] [float] NULL , [TotalAmount] [float] NULL ,
tblO rderD etails (Hợp đồng bán h àng chi tiết)
[SubID] [int] auto_increment NOT NULL , [OrderlD] int ,
[ItemID] int, [No] int,
[Qtty] [int] NULL , [Price] int NULL ,
[Discount] [Float] NULL , [Anount] [Float] NULL
tblltem s (Danh sách sản phẩm)
[ItemID] int auto_increment Prinary 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.