MARIADB USEFUL RESOURCES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Mệnh đề JOIN trong MariaDB

Trong các truy vấn SQL trước đây, ta đã thao tác trên một bảng hoặc truy xuất nhiều giá trị từ nhiều nguồn dữ liệu. Tuy nhiên, trong thực tế, hầu hết các truy vấn dữ liệu phức tạp hơn nhiều, đòi hỏi phải tổng hợp, so sánh và lấy dữ liệu từ nhiều bảng khác nhau.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

JOIN là một công cụ mạnh mẽ giúp kết hợp dữ liệu từ hai hoặc nhiều bảng thành một bảng kết quả duy nhất. Nó có thể được sử dụng trong các câu lệnh SELECT, UPDATE, và DELETE.

Giới thiệu về mệnh đề JOIN trong MariaDB

Mệnh đề JOIN cho phép kết hợp dữ liệu từ nhiều bảng dựa trên mối quan hệ giữa các cột chung.

???? Một số điểm cần lưu ý:

Bài viết này được đăng tại [free tuts .net]

  • Cú pháp JOIN hiện đại giúp câu lệnh dễ đọc, dễ bảo trì và tuân thủ best practices.
  • Cú pháp cũ sử dụng WHERE để kết hợp bảng, nhưng không khuyến khích sử dụng.
  • Có nhiều loại JOIN, bao gồm:
    • INNER JOIN
    • LEFT JOIN
    • RIGHT JOIN
    • FULL JOIN (MariaDB không hỗ trợ mặc định, nhưng có thể thay thế bằng UNION).

Cú pháp chung của JOIN trong MariaDB

SELECT cot1, cot2, ...
FROM bang1
INNER JOIN bang2
ON bang1.cot_chung = bang2.cot_chung;

Giải thích:

  • INNER JOIN: Lấy chỉ những bản ghi có giá trị khớp ở cả hai bảng.
  • ON: Điều kiện để nối dữ liệu giữa hai bảng dựa vào cột chung.

Sử dụng JOIN trong dòng lệnh (Command Prompt) trong MariaDB

Ví dụ: Truy vấn dữ liệu từ bảng productsinventory

root@host# mysql -u root -p
Enter password:*******
mysql> USE PRODUCTS;
Database changed

mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
   FROM products
   INNER JOIN inventory
   ON products.ID_number = inventory.ID_number;

Giải thích:

  • Truy vấn lấy dữ liệu từ bảng productsinventory.
  • INNER JOIN giúp chỉ lấy những sản phẩm có thông tin tồn kho trong bảng inventory.

Kết quả hiển thị:

ID_number Tên sản phẩm Số lượng tồn kho
12345 Orbitron 4000 150
12346 Orbitron 3000 200
12347 Orbitron 1000 0

Dữ liệu hiển thị chỉ bao gồm những sản phẩm có trong cả hai bảng.

Sử dụng JOIN trong PHP trong MariaDB

Ví dụ: Truy vấn dữ liệu với JOIN trong PHP

Lưu ý: mysql_query() đã lỗi thời, nên sử dụng mysqli hoặc PDO.

<?php
   $dbhost = 'localhost';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $dbname = 'PRODUCTS';

   // Kết nối đến cơ sở dữ liệu
   $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

   // Kiểm tra kết nối
   if ($conn->connect_error) {
      die("Kết nối thất bại: " . $conn->connect_error);
   }

   // Câu lệnh SELECT sử dụng JOIN
   $sql = "SELECT a.product_id, a.product_manufacturer, b.product_count   
           FROM products_tbl a
           INNER JOIN pcount_tbl b 
           ON a.product_manufacturer = b.product_manufacturer";

   $result = $conn->query($sql);

   if ($result->num_rows > 0) {
      while($row = $result->fetch_assoc()) {
         echo "Nhà sản xuất: " . $row['product_manufacturer'] . "<br>";
         echo "Số lượng: " . $row['product_count'] . "<br>";
         echo "Mã sản phẩm: " . $row['product_id'] . "<br>";
         echo "--------------------------------<br>";
      }
   } else {
      echo "Không tìm thấy dữ liệu.";
   }

   // Đóng kết nối
   $conn->close();
?>

Giải thích:

  • INNER JOIN kết hợp dữ liệu từ bảng products_tblpcount_tbl dựa trên nhà sản xuất (product_manufacturer).
  • Hiển thị danh sách nhà sản xuất, số lượng tồn kho và mã sản phẩm.

Kết quả hiển thị trên trình duyệt:

Nhà sản xuất: XYZ Corp
Số lượng: 150
Mã sản phẩm: 12345
--------------------------------
Nhà sản xuất: QFT Corp
Số lượng: 200
Mã sản phẩm: 12346
--------------------------------
Nhà sản xuất: LMN Corp
Số lượng: 0
Mã sản phẩm: 12347
--------------------------------

Chỉ hiển thị những sản phẩm có thông tin trong cả hai bảng.

Các loại JOIN khác trong MariaDB trong MariaDB

INNER JOIN (Lấy dữ liệu có trong cả hai bảng)

SELECT * 
FROM products 
INNER JOIN inventory 
ON products.ID_number = inventory.ID_number;

Chỉ lấy sản phẩm có dữ liệu tồn kho.

LEFT JOIN (Lấy tất cả dữ liệu từ bảng bên trái, nếu không có dữ liệu khớp thì hiển thị NULL)

SELECT * 
FROM products 
LEFT JOIN inventory 
ON products.ID_number = inventory.ID_number;

Lấy tất cả sản phẩm, nếu không có tồn kho thì hiển thị NULL.

RIGHT JOIN (Ngược với LEFT JOIN, lấy tất cả từ bảng bên phải)

SELECT * 
FROM products 
RIGHT JOIN inventory 
ON products.ID_number = inventory.ID_number;

Lấy tất cả dữ liệu từ bảng inventory, nếu không có sản phẩm tương ứng thì hiển thị NULL.

FULL JOIN (MariaDB không hỗ trợ trực tiếp, có thể dùng UNION)

SELECT * 
FROM products 
LEFT JOIN inventory 
ON products.ID_number = inventory.ID_number
UNION
SELECT * 
FROM products 
RIGHT JOIN inventory 
ON products.ID_number = inventory.ID_number;

Kết hợp cả LEFT JOINRIGHT JOIN, lấy tất cả dữ liệu từ cả hai bảng.

Kết bài

  • JOIN là công cụ mạnh mẽ giúp kết hợp dữ liệu từ nhiều bảng.
  • INNER JOIN chỉ lấy dữ liệu khớp giữa hai bảng.
  • LEFT JOIN lấy tất cả dữ liệu từ bảng bên trái, nếu không có dữ liệu phù hợp thì hiển thị NULL.
  • RIGHT JOIN lấy tất cả dữ liệu từ bảng bên phải.
  • FULL JOIN không được hỗ trợ trực tiếp, nhưng có thể mô phỏng bằng UNION.
  • Khi dùng JOIN trong PHP, nên sử dụng mysqli hoặc PDO thay vì mysql_query() để đảm bảo bảo mật.

Sử dụng JOIN hợp lý giúp tối ưu hóa truy vấn và tổ chức dữ liệu tốt hơn!

Cùng chuyên mục:

Biểu thức chính quy (Regular Expression) trong MariaDB

Biểu thức chính quy (Regular Expression) trong MariaDB

Quản lý dữ liệu trùng lặp trong MariaDB

Quản lý dữ liệu trùng lặp trong MariaDB

Dãy số (Sequences) trong MariaDB

Dãy số (Sequences) trong MariaDB

Table Cloning trong MariaDB

Table Cloning trong MariaDB

Bảng tạm (Temporary Tables) trong MariaDB

Bảng tạm (Temporary Tables) trong MariaDB

Indexes & Statistics Tables trong MariaDB

Indexes & Statistics Tables trong MariaDB

Alter Command trong MariaDB

Alter Command trong MariaDB

Transactions trong MariaDB

Transactions trong MariaDB

Biểu thức chính quy trong MariaDB

Biểu thức chính quy trong MariaDB

Giá trị NULL trong MariaDB

Giá trị NULL trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề LIKE trong MariaDB

Mệnh đề LIKE trong MariaDB

Câu lệnh DELETE trong MariaDB

Câu lệnh DELETE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Mệnh đề WHERE trong MariaDB

Mệnh đề WHERE trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Tìm hiểu Select Database trong MariaDB

Tìm hiểu Select Database trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Cú pháp PHP trong MariaDB

Cú pháp PHP trong MariaDB

Top