Câu lệnh left join trong SQL Server

Câu lệnh left join trong sql server thường xuyên được sử dụng để kết nối dữ liệu từ nhiều bảng giúp quá trình truy xuất dữ liệu diễn ra nhanh chóng, hiệu quả cao. Vậy thì left join sql là gì? Ngoài left join ra còn có những kiểu join nào nữa? Cùng Comdy.vn tìm hiểu chi tiết trong bài viết này bạn nhé.

Giới thiệu về câu lệnh LEFT JOIN trong SQL Server

Câu lệnh left join trong SQL Server
Mệnh đề LEFT JOIN cho phép bạn truy vấn dữ liệu từ nhiều bảng

Muốn join 2 hay join 3 bảng trong sql bạn sử dụng mệnh đề gì? Mệnh đề LEFT JOIN cho phép bạn truy vấn dữ liệu từ nhiều bảng. Nó trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải.

Left join là gì?

Left join trong SQL  là gì? Left join là một kiểu join trong SQL thường được sử dụng để kết hợp các dữ liệu từ hai bảng với điều kiện kết hợp. Trong đó, bảng bên trái sẽ hiển thị tất cả các dòng ngay cả khi không có sự khớp trong bảng bên phải. Nếu không có sự khớp, các cột từ bảng bên phải sẽ chứa giá trị NULL.

Sau đây minh họa cách join hai bảng T1 và T2 bằng hàm left join trong sql:

SELECT
    select_list
FROM
    T1
LEFT JOIN T2 ON
    join_predicate;

Trong cú pháp này, T1 và T2 lần lượt là các bảng bên trái và bên phải.

Đối với mỗi bản ghi từ bảng T1, truy vấn so sánh nó với tất cả các bản ghi từ bảng T2. Nếu một cặp bản ghi làm cho biểu thức join được đánh giá là TRUE, giá trị các cột từ các bản ghi này sẽ được kết hợp để tạo thành một bản ghi mới sau đó được đưa vào trong tập kết quả.

Nếu một bản ghi từ bảng bên trái (T1) không có bất kỳ bản ghi phù hợp nào từ bảng T2, truy vấn kết hợp các giá trị cột của bản ghi từ bảng bên trái với các giá trị NULL cho mỗi cột từ bảng bên phải.

Nói tóm lại, mệnh đề LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái (T1) và các bản ghi khớp từ bảng bên phải (T2) hoặc các giá trị NULL nếu không khớp.

Ví dụ về mệnh đề LEFT JOIN trong SQL Server

Ví dụ về mệnh đề left join trong SQL Server
Ví dụ cụ thể về mệnh đề left join trong SQL Server

Như vậy bạn đã biết left join sql là gì. Nhưng để hiểu rõ hơn, xem ngay câu lệnh sử dụng mệnh đề LEFT JOIN để truy vấn dữ liệu từ bảng: products và order_itemssau đây:

SELECT
    product_name,
    order_id
FROM
    production.products p
    LEFT JOIN sales.order_items o ON o.product_id = p.product_id
ORDER BY
    order_id;

Có thể sử dụng mệnh đề WHERE để giới hạn tập kết quả. Truy vấn sau đây trả về các sản phẩm không xuất hiện trong bất kỳ đơn đặt hàng nào:

SELECT
    product_name,
    order_id
FROM
    production.products p
    LEFT JOIN sales.order_items o ON o.product_id = p.product_id
WHERE order_id IS NULL
ORDER BY
    order_id;

Như mọi khi, SQL Server xử lý mệnh đề WHERE sau mệnh đề LEFT JOIN.

Ví dụ sau đây cho thấy cách join ba bảng: production.products, sales.orders và sales.order_items sử dụng mệnh đề sql LEFT JOIN:

SELECT
    p.product_name,
    o.order_id,
    i.item_id,
    o.order_date
FROM
    production.products p
    LEFT JOIN sales.order_items i ON i.product_id = p.product_id
    LEFT JOIN sales.orders o ON o.order_id = i.order_id
ORDER BY
    order_id;

Điều kiện trong mệnh đề ON với WHERE

Truy vấn sau đây tìm thấy các sản phẩm thuộc về id đơn hàng là 100:

SELECT
    product_name,
    order_id
FROM
    production.products p
    LEFT JOIN sales.order_items o ON o.product_id = p.product_id
WHERE order_id = 100
ORDER BY
    order_id;

Hãy chuyển điều kiện order_id = 100 sang mệnh đề ON:

SELECT
    p.product_id,
    product_name,
    order_id
FROM
    production.products p
    LEFT JOIN sales.order_items o ON o.product_id = p.product_id AND 
        o.order_id = 100
ORDER BY
    order_id DESC;

Truy vấn trả về tất cả các sản phẩm nhưng chỉ những sản phẩm của đơn hàng có id 100 mới có thông tin của đơn hàng.

Sở dĩ có kết quả như vậy là do mệnh đề LEFT JOIN ở trên sẽ lấy tất cả các bản ghi ở bảng products kết hợp với các bản ghi có order_id = 100 ở bảng order_items (không phải tất cả bản ghi ở bảng order_items).

Do đó bạn phải thật chú ý khi sử dụng điều kiện lọc ở mệnh đề join.

Lưu ý: đối với mệnh đề INNER JOIN, điều kiện trong mệnh đề ON là tương đương về chức năng nếu nó được đặt trong mệnh đề WHERE.

Khi nào sử dụng câu lệnh join trong SQL?

Khi nào sử dụng câu lệnh join trong SQL
Câu lệnh JOIN giúp bạn tạo ra các kết quả mà không cần phải lưu trữ dữ liệu trong một bảng tạm thời

Bạn sử dụng câu lệnh JOIN trong SQL khi bạn muốn kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên một điều kiện kết hợp cụ thể. Câu lệnh JOIN giúp bạn tạo ra các kết quả mà không cần phải lưu trữ dữ liệu trong một bảng tạm thời.

Dưới đây là một số trường hợp mà bạn thường cần sử dụng câu lệnh JOIN:

  • Lấy thông tin từ nhiều bảng:

Khi dữ liệu bạn cần nằm ở các bảng khác nhau và bạn muốn kết hợp chúng để có kết quả hoàn chỉnh.

  • Liên kết dữ liệu giữa các bảng:

Khi bạn muốn kết hợp dữ liệu dựa trên một điều kiện cụ thể, chẳng hạn như sự khớp giữa các cột trong các bảng.

  • Tối ưu hóa cơ sở dữ liệu:

Khi bạn muốn tách thông tin thành các bảng riêng biệt để giảm trùng lặp và tối ưu hóa cấu trúc cơ sở dữ liệu, và sau đó sử dụng JOIN để lấy thông tin khi cần thiết.

  • Thực hiện các phép tính toán phức tạp:

Khi bạn muốn thực hiện các phép tính toán hoặc lọc dữ liệu từ nhiều bảng.

Cách Join nhiều bảng trong SQL

Cách Join nhiều bảng trong SQL
Cách Join nhiều bảng trong SQL như thế nào?

Cách join 3 bảng trong sql sử dụng lệnh gì? Trong SQL, để kết hợp nhiều bảng, join nhiều bảng sql, bạn có thể sử dụng lệnh JOIN. Có một số loại JOIN khác nhau như INNER JOIN, LEFT JOIN, RIGHT JOIN, và FULL JOIN. Dưới đây là một ví dụ về cách sử dụng INNER JOIN để kết hợp hai bảng. Trong đó:

Inner join

  • Kết quả chỉ chứa các dòng có sự khớp trong cả hai bảng.
  • Dòng trong bảng kết quả sẽ chứa thông tin từ cả hai bảng với điều kiện kết hợp.

Left join hoặc lefft outer join

  • Kết quả sẽ chứa tất cả các dòng từ bảng bên trái và các dòng khớp từ bảng bên phải.
  • Nếu không có sự khớp, các cột từ bảng bên phải sẽ có giá trị NULL.

Right join hoặc right outer join

  • Kết quả sẽ chứa tất cả các dòng từ bảng bên phải và các dòng khớp từ bảng bên trái.
  • Nếu không có sự khớp, các cột từ bảng bên trái sẽ có giá trị NULL.

Full join hoặc full outer join

  • Kết quả sẽ chứa tất cả các dòng từ cả hai bảng, với hoặc không có sự khớp.
  • Nếu không có sự khớp, các cột từ bảng không có sự khớp sẽ có giá trị NULL.

Làm sao để truy vấn nhiều bảng trong SQL?

Làm sao để truy vấn nhiều bảng trong SQL
Để truy vấn nhiều bảng trong SQL, bạn có thể sử dụng câu lệnh JOIN
Để truy vấn nhiều bảng trong SQL, bạn có thể sử dụng câu lệnh JOIN. Cách thực hiện như sau:
  • Chọn loại JOIN phù hợp:

Chọn loại JOIN phù hợp với yêu cầu của bạn. Có INNER JOIN, LEFT JOIN, RIGHT JOIN và FULL JOIN. Quyết định loại JOIN phụ thuộc vào cách bạn muốn kết hợp dữ liệu và xử lý các dòng không khớp.

  • Xác định các điều kiện kết hợp:

Xác định cột hoặc cột mà bạn muốn sử dụng để kết hợp dữ liệu giữa các bảng.

  • Viết câu lệnh SQL với JOIN:

Sử dụng câu lệnh SELECT để chọn các cột bạn muốn hiển thị, câu lệnh FROM để xác định bảng chính, lệnh JOIN để kết hợp với các bảng khác.

Có thể truy vấn nhiều điều kiện trong SQL không?

Có thể truy vấn nhiều điều kiện trong SQL không
Hoàn toàn có thể truy vấn nhiều điều kiện trong SQL bằng cách kết hợp các mệnh đề với nhau

Bạn hoàn toàn có thể truy vấn nhiều điều kiện trong SQL bằng cách sử dụng mệnh đề WHERE trong câu lệnh SELECT. Hoặc sử dụng các mệnh đề khác như AND, OR để kết hợp nhiều điều kiện. Dưới đây là một số cách bạn có thể thực hiện điều này:

Kết hợp where và and

SELECT column1, column2, …
FROM table
WHERE condition1 AND condition2;

Kết hợp where và or

SELECT column1, column2, …
FROM table
WHERE condition1 OR condition2;

Kết hợp and và or

SELECT column1, column2, …
FROM table
WHERE (condition1 AND condition2) OR condition3;

Sử dụng In để so sánh với 1 danh sách

SELECT column1, column2, …
FROM table
WHERE column_name IN (value1, value2, …);

Sử dụng between cho phạm vi của giá trị

SELECT column1, column2, …
FROM table
WHERE column_name BETWEEN value1 AND value2;

Left join entity framework là gì?

Trong Entity Framework, LEFT JOIN được thực hiện thông qua phưleft join la giơng thức DefaultIfEmpty() khi bạn thực hiện một truy vấn LINQ.

Khi bạn làm việc với nhiều bảng và muốn thực hiện một LEFT JOIN, bạn sử dụng DefaultIfEmpty() để đảm bảo rằng kết quả sẽ chứa tất cả các dòng từ bảng bên trái, kể cả khi không có sự khớp.

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về câu lệnh join và left join trong sql server. Hi vọng những kiến thức trong bài viết này là bổ ích đối với bạn. Xin cám ơn vì đã theo dõi, ủng hộ bài viết.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *