Để join hai bảng trong MySQL, thường sử dụng LEFT JOIN với ràng buộc khóa ngoại (foreign key).
Ví dụ minh họa
Tạo bảng cha (ParentTable)
mysql> CREATE TABLE ParentTable (
-> UniqueId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName VARCHAR(10)
-> );
Chèn dữ liệu:
mysql> INSERT INTO ParentTable(EmployeeName) VALUES('John');
mysql> INSERT INTO ParentTable(EmployeeName) VALUES('Carol');
mysql> INSERT INTO ParentTable(EmployeeName) VALUES('Sam');
mysql> INSERT INTO ParentTable(EmployeeName) VALUES('Bob');
Tạo bảng con (ChildTable) với khóa ngoại
mysql> CREATE TABLE ChildTable (
-> UniqueId INT NOT NULL PRIMARY KEY,
-> EmployeeAddress VARCHAR(100),
-> CONSTRAINT fk_uniqueId FOREIGN KEY(UniqueId) REFERENCES ParentTable(UniqueId)
-> );
Chèn dữ liệu:
mysql> INSERT INTO ChildTable VALUES(1, '15 West Shady Lane Starkville, MS 39759'); mysql> INSERT INTO ChildTable VALUES(2, '72 West Rock Creek St. Oxford, MS 38655'); mysql> INSERT INTO ChildTable(UniqueId) VALUES(3); mysql> INSERT INTO ChildTable VALUES(4, '119 North Sierra St. Marysville, OH 43040');
Thực hiện LEFT JOIN
mysql> SELECT ParentTable.UniqueId, ParentTable.EmployeeName, ChildTable.EmployeeAddress
-> FROM ParentTable
-> LEFT JOIN ChildTable ON ParentTable.UniqueId = ChildTable.UniqueId;
Kết quả:
+----------+--------------+-------------------------------------------+ | UniqueId | EmployeeName | EmployeeAddress | +----------+--------------+-------------------------------------------+ | 1 | John | 15 West Shady Lane Starkville, MS 39759 | | 2 | Carol | 72 West Rock Creek St. Oxford, MS 38655 | | 3 | Sam | NULL | | 4 | Bob | 119 North Sierra St. Marysville, OH 43040 | +----------+--------------+-------------------------------------------+
LEFT JOIN giữ lại tất cả bản ghi từ bảng bên trái (ParentTable) và khớp với bảng bên phải. Nếu không khớp, cột bảng bên phải sẽ là NULL.