Thứ Hai, 6 Tháng Hai 2023
Trang chủPHP & MysqlMySQLTìm hiểu SELF JOIN trong MySQL - Học MySQL cơ bản

Tìm hiểu SELF JOIN trong MySQL – Học MySQL cơ bản

Tại bài viết trước chúng ta đã cùng nhau tìm hiểu mệnh đề JOIN trong MySQL và nắm được cách sử dụng ra sao, tuy nhiên khi chỉ sử dụng mệnh đề JOIN đơn thuần thì chưa thể kết hợp dữ liệu một cách triệt để nhất trong một số trường hợp đặt ra mong muốn.

Trong bài viết này, cũng như các bài viết sau chúng ta sẽ tiếp tục với mệnh đề JOIN với các keyword INNER JOINLEFT JOINRIGHT JOINCROSS JOINSELF JOIN,  FULL OUTER JOIN.

SELF JOIN trong MySQL

Thông thường, mỗi bảng trong cơ sở dữ liệu lưu trữ một dạng thông tin khác nhau. Do đó, trên thực tế, sẽ có thể có tới hàng trăm bảng có mối quan hệ với nhau trong cơ sở dữ liệu. Ta có thể join các bảng khác nhau có cùng cột bằng cách sử dụng cú pháp JOIN trong SQL.

Hình ảnh mình họa SELF JOIN
Hình ảnh mình họa SELF JOIN

SELF-JOIN là một trường hợp đặc biệt của truy vấn SQL JOIN. Trong khi các cú pháp của hàm JOIN khác cần liên kết từ 2 bảng trở lên để thể hiện các dữ liệu chung, đúng như tên gọi. SELF-JOIN trong SQL lại tự “liên kết” với chính nó.

Để sử dụng SELF-JOIN, bảng được sử dụng phải của một cột (tạm gọi là X) hoạt động như 1 primary key và một cột khác (gọi là Y) chứa dữ liệu có liên kết với cột X.

Ví dụ mình có bảng như bên dưới đây.

Tìm hiểu SELF JOIN trong MySQL - Học MySQL cơ bản

Đối với bảng này những hàng nào có parents_id0 là công việc gốc, ngược lại parents_id mà khác 0 thì giá trị đó thể hiện hàng đó là công việc con của công việc cha có id như vậy.

Trong bảng này có 2 công việc có id là 12 13, nội dung công việc lần lượt là “Bắt đầu code giao diện”, “Làm phân tích thiết kế” có parents_id11, vậy cả 2 công việc này sẽ là công việc con của công việc “Làm đồ án cho thằng em“.

Cú pháp SELF JOIN

Cú pháp chung mệnh đề SELF JOIN như sau.

SELECT a.ten_cot, b.ten_cot....
FROM bang_1 a, bang_1 b
WHERE  a.ten_cot_chung = b.ten_cot_chung 

Trong đó:

  • bang_1 a, bang_1 b: Đều là bảng “bang_1” nên ta đặt lại tên a, b để phân biệt chúng.
  • a.ten_cot, b.ten_cot…: Là tên các cột mà muốn select dữ liệu trong bảng a hoặc bảng b.
  • a.ten_cot_chung = b.ten_cot_chung: Điều kiện

>> Đọc thêm: Mệnh đề WHERE trong MySQL – Mệnh đề điều kiện

Ví dụ áp dụng:

Với bảng đã có ở bên trên, bây giờ mình có thể viết câu lệnh SQL như sau.

SELECT a.id, a.content,  b.parents_id, b.content AS child_content
FROM tasks a, tasks b
WHERE a.id = b.parents_id

Kết quả khi thực hiện câu lệnh này

Tìm hiểu SELF JOIN trong MySQL - Học MySQL cơ bản

Ta có thể hiểu câu lệnh bên trên sẽ lấy ra tất cả các công việc mà có công việc con và lấy công của con của công việc đó.

Nội dung của công việc con mình đặt lên tên cột khi select bằng thuộc tính ASchild_content để dễ dàng phân biệt với nội dung công việc cha.

>>XEM THÊM: Toán tử số học trong MySQL – Phép toán trong MySQL

Về cơ bản bài viết này chỉ có như vậy, hy vọng bài viết dễ hiểu mà bạn có thể thông qua bài viết áp dụng được SELF JOIN trong MySQL. Chúc bạn học tốt!

[XEM TẤT CẢ CÁC BÀI HƯỚNG DẪN MYSQL TẠI ĐÂY]

XEM THÊM
Câu lệnh INSERT INTO trong MySQL – Lệnh chèn dữ liệu vào bảng
Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới
Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL
Câu lệnh SELECT trong MySQL – Khi nào thì dùng lệnh SELECT
Toán tử so sánh trong MySQL – So sánh bằng, lớn hơn, nhỏ hơn

0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x