JOIN STATEMENT

1.Join là gì?

Join là một câu lệnh với nhiều kiểu khác nhau như: inner join, left join, right join,.. Câu lệnh join sẽ giúp bạn tạo ra bảng mới bằng cách lấu dữ liệu từ 2 hay nhiều bảng khác nhau với các điều kiện cho trước.

Join là một câu lệnh khá mạnh, được ứng dụng rất nhiều trong SQL . Hôm nay chúng ta sẽ cùng tìm hiểu về 2 loại join phổ biến là inner join và left join.

1.Inner join

Inner join là câu lệnh cho phép bạn lấy dữ liệu từ nhiều bảng mà trong đó dữ liệu có một hoặc một số tiêu chí tương đồng nhau

Cú pháp:

Join 2 bảng:

SELECT col_name(s)

FROM table1

INNER JOIN table2 ON table1.col_name = table2.col_name

Kết quả sau khi inner join 2 bảng

Join nhiều bảng:

Khi Join nhiều bảng với nhau, ta sẽ join lần lượt từng cặp mỗi cặp 2 bảng cho đến hết sau đó sẽ lấy phần chung của tất cả sau khi join từng cặp với nhau.

Trong ví dụ dưới dây chúng ta sẽ join 3 bảng:

Lần lượt chúng ta sẽ Join bảng 1 và 2. Sau khi join ta sẽ được phần chung màu vàng

Tạm gọi A1 = [1,2] là kết quả vùng vàng sau khi join bảng 1 và 2.

Tương tự ta có A2, A3 là kết quả khi join bảng [2,3] và [3,1]

Khi đã có A1, A2, A3 ta sẽ join chúng với nhau.

Kết quả Y = [A1, A2, A3]

Khi này Y chính là kết quả join giữa 3 bảng. Khi mở rộng ta sẽ có join n bảng. Tuy nhiên nguyên lí thực hiện vẫn tương tự join 3 bảng.

Từ đây ta có thể kết luận khi join càng nhiều bảng kết quả thu được sẽ càng nhỏ.

SELECT col_name(s)

FROM ((table1

INNER JOIN table2 ON table1.col_name = table2.col_name)

INNER JOIN table3 ON table1.col_name = table3.col_name)

Trong đó:

▪ table1: bảng dữ liệu thứ nhất

▪ table2: bảng dữ liệu thứ hai.

▪ table3: bảng dữ liệu thứ ba

Lưu ý: có bao nhiêu bảng (từ bảng thứ hai) INNER JOIN với bảng thứ nhất thì có bấy

nhiêu cặp dấu ngoặc “()” đơn sau FROM.

▪ Trong câu lệnh ON có thể kết hợp nhiều điều kiện bằng hàm AND

▪ Có thể áp dụng câu lệnh điều kiện WHERE/ORDER BY trong câu lệnh JOIN. WHERE

nên để sau khi kết thúc câu lệnh JOIN

2.Left join

Lấy dữ liệu từ nhiều bảng mà trong đó bảng thứ nhất được giữ nguyên, các bảng khác nếu có phần không thuộc bảng thứ nhất sẽ có giá tự là NULL

Cú pháp:

SELECT col_name(s)

FROM table1

LEFT JOIN table2 ON table1.col_name = table2.col_name;

Chúc các bạn thành công với 2 lệnh Join nói trên!