Mệnh đề JOIN trong MariaDB
Trong thực tế, các hoạt động trên cơ sở dữ liệu thường phức tạp hơn nhiều so với việc chỉ truy vấn từ một bảng duy nhất. Nhiều trường hợp yêu cầu xử lý dữ liệu bằng cách kết hợp, so sánh hoặc lấy dữ liệu từ nhiều bảng khác nhau. Mệnh đề JOIN trong MariaDB cho phép kết hợp dữ liệu từ hai hoặc nhiều bảng thành một kết quả duy nhất, phục vụ các mục đích như tổng hợp, phân tích hoặc xử lý dữ liệu đa nguồn.
Mệnh đề JOIN được sử dụng trong các câu lệnh như SELECT, UPDATE, và DELETE.
Cú pháp cơ bản của JOIN trong MariaDB
SELECT column FROM table_name1 INNER JOIN table_name2 ON table_name1.column = table_name2.column;
Lưu ý:
- Cách viết cũ (old syntax) sử dụng cú pháp JOIN ngầm định với WHERE, nhưng việc sử dụng từ khóa INNER JOIN, LEFT JOIN, hoặc RIGHT JOIN được khuyến khích hơn vì tăng tính rõ ràng và dễ bảo trì cho mã lệnh.
- Có nhiều loại JOIN như INNER JOIN, LEFT JOIN, RIGHT JOIN, mỗi loại phù hợp với các trường hợp khác nhau.
Ví dụ minh họa
Trên cửa sổ lệnh Command Prompt
Kết hợp dữ liệu từ hai bảng products và inventory để lấy thông tin sản phẩm cùng số lượng tồn kho:
Bài viết này được đăng tại [free tuts .net]
root@host# mysql -u root -p password; 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; +-------------+----------------+-----------------+ | ID_number | Nomenclature | Inventory Count | +-------------+----------------+-----------------+ | 12345 | Orbitron 4000 | 150 | | 12346 | Orbitron 3000 | 200 | | 12347 | Orbitron 1000 | 0 | +-------------+----------------+-----------------+
Trong ví dụ này:
- products và inventory được kết hợp qua cột ID_number.
- Kết quả trả về chứa thông tin sản phẩm (ID, tên sản phẩm) và số lượng tồn kho tương ứng.
Sử dụng JOIN trong mã PHP trong MariaDB
Trong ứng dụng PHP, có thể sử dụng hàm mysql_query()
để thực hiện câu lệnh JOIN. Ví dụ:
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Không thể kết nối: ' . mysql_error()); } $sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer'; mysql_select_db('PRODUCTS'); $retval = mysql_query($sql, $conn); if(! $retval ) { die('Không thể lấy dữ liệu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Nhà sản xuất: {$row['product_manufacturer']} <br> ". "Số lượng: {$row['product_count']} <br> ". "Mã sản phẩm: {$row['product_id']} <br> ". "--------------------------------<br>"; } echo "Dữ liệu đã được truy xuất thành công\n"; mysql_close($conn); ?>
Kết quả sau khi thực thi:
Sau khi kết hợp hai bảng, dữ liệu trả về bao gồm thông tin nhà sản xuất, số lượng và mã sản phẩm:
Mã sản phẩm: 12345 Tên sản phẩm: Orbitron 4000 Số lượng tồn kho: 150 -------------------------------- Mã sản phẩm: 12346 Tên sản phẩm: Orbitron 3000 Số lượng tồn kho: 200 -------------------------------- Mã sản phẩm: 12347 Tên sản phẩm: Orbitron 1000 Số lượng tồn kho: 0 -------------------------------- Dữ liệu đã được truy xuất thành công
Kết bài
Mệnh đề JOIN trong MariaDB là công cụ mạnh mẽ cho phép bạn làm việc với nhiều bảng, mang lại sự linh hoạt trong truy vấn dữ liệu phức tạp. Dù là INNER JOIN, LEFT JOIN, hay RIGHT JOIN, bạn có thể tận dụng để đáp ứng các yêu cầu truy xuất và xử lý dữ liệu đa chiều trong thực tế. Việc sử dụng cú pháp rõ ràng và tuân thủ các thực hành tốt sẽ giúp mã của bạn dễ đọc, bảo trì, và mở rộng.