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

Trong MySQL, làm thế nào chúng ta có thể duy trì mối quan hệ bảng theo hướng dữ liệu bằng cách sử dụng các phép nối?


Trên thực tế, đôi khi chúng ta có thể tránh các mối quan hệ theo hướng dữ liệu trong bảng và chúng ta cần phải nối chúng. Nó có thể được thực hiện với sự trợ giúp của câu lệnh CASE trong danh sách SELECT để xử lý các khả năng kết hợp. Để hiểu nó, chúng tôi đang lấy ví dụ về ba bảng theo hướng dữ liệu là ‘Student_Detail’ có dữ liệu sau -

mysql> Select * from student_detail;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | Harshit |
| 2  | Rahul   |
| 3  | Aarav   |
+----+---------+
3 rows in set (0.00 sec)

Bây giờ, chúng ta có ba bảng là ‘Student_Harshit’, ‘Student_Rahul’, ‘Student_Aarav’ có các nhận xét lần lượt cho các sinh viên Harshit, Rahul và Aarav. Họ có dữ liệu sau -

mysql> Select * from Student_Harshit;
+----+-----------+
| Id | Remarks   |
+----+-----------+
| 1  | Excellent |
+----+-----------+
1 row in set (0.00 sec)

mysql> Select * from Student_Rahul;
+----+---------+
| Id | Remarks |
+----+---------+
| 2  | Average |
+----+---------+
1 row in set (0.00 sec)

mysql> Select * from Student_Aarav;
+----+-------------+
| Id | Remarks     |
+----+-------------+
| 3  | Intelligent |
+----+-------------+
1 row in set (0.00 sec)

Bây giờ, truy vấn sau sẽ xử lý các bảng theo hướng dữ liệu này -

mysql> Select sd.id, sd.name, CASE name WHEN 'Harshit' THEN H1.Remarks WHEN 'Rahul' THEN R1.Remarks WHEN 'Aarav' THEN A1.Remarks ELSE 'Error' END as REMARKS FROM Student_detail AS sd LEFT JOIN Student_Harshit AS H1 ON sd.id = H1.id LEFT JOIN Student_Rahul AS R1 ON sd.id = R1.id LEFT JOIN Student_Aarav AS A1 on sd.id = A1.id;
+----+---------+-------------+
| id | name    | REMARKS     |
+----+---------+-------------+
| 1  | Harshit | Excellent   |
| 2  | Rahul   | Average     |
| 3  | Aarav   | Intelligent |
+----+---------+-------------+
3 rows in set (0.00 sec)