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

Làm cách nào chúng ta có thể tạo dạng xem MySQL bằng cách sử dụng dữ liệu từ nhiều bảng?


Toán tử UNION trong MySQL có thể kết hợp hai hoặc nhiều tập kết quả do đó chúng ta có thể sử dụng toán tử UNION để tạo một dạng xem có dữ liệu từ nhiều bảng. Để hiểu khái niệm này, chúng tôi đang sử dụng bảng cơ sở ‘Student_info’ và ‘Student_detail’ có dữ liệu sau -

mysql> Select * from Student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
| 130  | Ram     | Jhansi     | Computers  |
| 132  | Shyam   | Chandigarh | Economics  |
| 133  | Mohan   | Delhi      | Computers  |
+------+---------+------------+------------+
6 rows in set (0.00 sec)

mysql> Select * from Student_detail;
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|       100 | Gaurav      | Delhi      |
|       101 | Raman       | Shimla     |
|       103 | Rahul       | Jaipur     |
|       104 | Ram         | Chandigarh |
|       105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
5 rows in set (0.00 sec)

Ví dụ

Truy vấn bên dưới sẽ tạo chế độ xem bằng cách sử dụng dữ liệu từ cả hai bảng nêu trên -

mysql> Create or Replace View Info AS Select StudentName from Student_detail UNION Select Name From Student_info;
Query OK, 0 rows affected (0.10 sec)

mysql> select * from info;
+-------------+
| StudentName |
+-------------+
| Gaurav      |
| Raman       |
| Rahul       |
| Ram         |  
| Mohan       |
| YashPal     |
| Shyam       |
+-------------+
7 rows in set (0.00 sec)

Tập hợp kết quả trên có sự kết hợp của các giá trị từ cả hai cột. Nếu một giá trị đang lặp lại thì nó sẽ loại bỏ các giá trị trùng lặp.

Chúng tôi cũng có thể lưu trữ tất cả các giá trị, sao chép một giá trị cũng bằng cách sử dụng UNION ALL như trong truy vấn sau -

mysql> Create or Replace View Info AS Select student name from Student_detail UNION ALL Select Name From Student_info;
Query OK, 0 rows affected (0.16 sec)

mysql> select * from info;
+-------------+
| StudentName |
+-------------+
| Gaurav      |
| Raman       |
| Rahul       |
| Ram         |
| Mohan       |
| YashPal     |
| Gaurav      |
| Raman       |
| Ram         |
| Shyam       |
| Mohan       |
+-------------+
11 rows in set (0.00 sec)