Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để tính tổng các cột trên nhiều bảng trong MySQL?

Để tính tổng các cột trên nhiều bảng, hãy sử dụng UNION ALL. Để hiểu khái niệm, chúng ta hãy tạo bảng đầu tiên. Truy vấn để tạo bảng đầu tiên như sau

mysql> create table Products1
   -> (
   -> ProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> ProductName varchar(20),
   -> ProductPrice int
   -> );
Query OK, 0 rows affected (0.50 sec)

Chèn một số bản ghi trong bảng đầu tiên bằng cách sử dụng lệnh chèn. Truy vấn như sau -

mysql> insert into Products1(ProductName,ProductPrice) values('Product-1',100);
Query OK, 1 row affected (0.22 sec)
mysql> insert into Products1(ProductName,ProductPrice) values('Product-2',200);
Query OK, 1 row affected (0.34 sec)
mysql> insert into Products1(ProductName,ProductPrice) values('Product-3',700);
Query OK, 1 row affected (0.15 sec)

Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng đầu tiên bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from Products1;

Sau đây là kết quả

+-----------+-------------+--------------+
| ProductId | ProductName | ProductPrice |
+-----------+-------------+--------------+
|         1 | Product-1   |          100 |
|         2 | Product-2   |          200 |
|         3 | Product-3   |          700 |
+-----------+-------------+--------------+
3 rows in set (0.00 sec)

Hãy để chúng tôi tạo bảng thứ hai. Truy vấn để tạo nó như sau

mysql> create table Products2
   -> (
   -> ProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> ProductName varchar(20),
   -> ProductPrice int
   -> );
Query OK, 0 rows affected (0.63 sec)

Chèn một số bản ghi trong bảng thứ hai bằng cách sử dụng lệnh chèn. Truy vấn như sau -

mysql> insert into Products2(ProductName,ProductPrice) values('Product-1',500);
Query OK, 1 row affected (0.24 sec)
mysql> insert into Products2(ProductName,ProductPrice) values('Product-4',100);
Query OK, 1 row affected (0.13 sec)
mysql> insert into Products2(ProductName,ProductPrice) values('Product-5',400);
Query OK, 1 row affected (0.10 sec)

Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng thứ hai bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from Products2;

Sau đây là kết quả

+-----------+-------------+--------------+
| ProductId | ProductName | ProductPrice |
+-----------+-------------+--------------+
|         1 | Product-1   |          500 |
|         2 | Product-4   |          100 |
|         3 | Product-5   |          400 |
+-----------+-------------+--------------+
3 rows in set (0.00 sec)

Đây là truy vấn để tính tổng các cột trên nhiều bảng trong MySQL

mysql> SELECT SUM(tbl.ProductPrice) AS TotalPrice
   -> FROM (SELECT ProductPrice FROM Products1
   -> UNION ALL
   -> SELECT ProductPrice FROM Products2) tbl;

Sau đây là kết quả

+------------+
| TotalPrice |
+------------+
|       2000 |
+------------+
1 row in set (0.04 sec)