×

Kết hợp bảng với lệnh JOIN trong MySQL

Khi làm việc với cơ sở dữ liệu MySQL, việc kết hợp dữ liệu từ nhiều bảng khác nhau là một nhiệm vụ thường thấy. Lệnh JOIN trong MySQL là công cụ mạnh mẽ để thực hiện điều này, cho phép bạn 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 cột. Hãy cùng tìm hiểu chi tiết về các loại JOIN phổ biến và cách chúng hoạt động.

1. INNER JOIN

Đây là loại JOIN được sử dụng nhiều nhất, nó trả về các hàng khi có sự phù hợp giữa các bảng được liên kết. Cú pháp của INNER JOIN như sau:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;

Ví dụ, giả sử bạn có hai bảng EmployeeDepartment, bạn muốn lấy tên nhân viên cùng với tên phòng ban. Bạn có thể sử dụng INNER JOIN như sau:

SELECT Employee.name, Department.name
FROM Employee
INNER JOIN Department
ON Employee.department_id = Department.department_id;

2. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN trả về tất cả các hàng từ bảng bên trái (table1) và các hàng phù hợp từ bảng bên phải (table2). Nếu không có sự phù hợp, kết quả từ bảng bên phải sẽ là NULL. Cú pháp:

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.common_column = table2.common_column;

Ví dụ:

SELECT Employee.name, Department.name
FROM Employee
LEFT JOIN Department
ON Employee.department_id = Department.department_id;

3. RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN trả về tất cả các hàng từ bảng bên phải và các hàng phù hợp từ bảng bên trái. Nếu không có sự phù hợp, kết quả từ bảng bên trái sẽ là NULL. Cú pháp:

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.common_column = table2.common_column;

Ví dụ:

SELECT Employee.name, Department.name
FROM Employee
RIGHT JOIN Department
ON Employee.department_id = Department.department_id;

4. FULL JOIN (FULL OUTER JOIN)

FULL JOIN kết hợp kết quả của LEFT JOIN và RIGHT JOIN, trả về tất cả các hàng khi có sự phù hợp trong một trong hai bảng. Cú pháp:

SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.common_column = table2.common_column;

MySQL không hỗ trợ trực tiếp FULL JOIN, nhưng bạn có thể mô phỏng nó bằng cách sử dụng UNION của LEFT JOIN và RIGHT JOIN:

SELECT Employee.name, Department.name
FROM Employee
LEFT JOIN Department
ON Employee.department_id = Department.department_id
UNION
SELECT Employee.name, Department.name
FROM Employee
RIGHT JOIN Department
ON Employee.department_id = Department.department_id;

5. CROSS JOIN

CROSS JOIN trả về tích Đề-các của hai bảng, tức là kết hợp tất cả các hàng của bảng A với tất cả các hàng của bảng B. Cú pháp:

SELECT columns
FROM table1
CROSS JOIN table2;

Ví dụ:

SELECT Employee.name, Department.name
FROM Employee
CROSS JOIN Department;

6. SELF JOIN

SELF JOIN là một loại JOIN đặc biệt tự kết hợp với chính nó. Điều này có thể hữu ích khi bạn muốn so sánh các hàng trong cùng một bảng. Cú pháp:

SELECT a.column_name, b.column_name
FROM table1 a, table1 b
WHERE condition;

Ví dụ:

SELECT e1.name as Employee1, e2.name as Employee2
FROM Employee e1, Employee e2
WHERE e1.manager_id = e2.employee_id;

Như vậy, lệnh JOIN trong MySQL cho phép bạn tùy ý kết hợp và truy xuất thông tin từ nhiều bảng một cách linh hoạt. Hiểu và sử dụng các mệnh lệnh JOIN này sẽ giúp bạn khai thác tối đa dữ liệu trong cơ sở dữ liệu của mình.

Comments