Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách tham gia nhiều (3+) bảng trong một câu lệnh

Vấn đề:

Bạn muốn kết hợp dữ liệu từ nhiều hơn hai bảng chỉ bằng một câu lệnh SELECT.

Ví dụ:

Có bốn bảng trong cơ sở dữ liệu của chúng tôi:student , teacher , subjectlearning .

student bảng chứa dữ liệu trong các cột sau:id , first_namelast_name .

id first_name last_name
1 Tom Miller
2 John Mùa xuân
3 Lisa Williams
4 Ellie Barker
5 James Moore

teacher bảng chứa dữ liệu trong các cột sau:id , first_name , last_namesubject .

id first_name last_name
1 Milan Smith
2 Charles Davis
3 Đánh dấu Moore

subject bảng chứa dữ liệu trong các cột sau:idname .

id tên
1 Tiếng Anh
2 Nghệ thuật
3 Âm nhạc

Cuối cùng, learning bảng chứa dữ liệu trong các cột sau:id , mark , subject_id , student_idteacher_id .

dấu
id subject_id student_id teacher_id
1 4 1 2 1
2 5 2 3 2
3 4 3 1 3
4 3 2 1 2
5 2 3 5 3
6 3 3 4 2

Chúng tôi muốn biết học sinh nào đang học tiếng Anh, âm nhạc và nghệ thuật, cũng như giáo viên nào đang hướng dẫn các lớp này. Chọn chủ đề khóa học, họ của học sinh tham gia khóa học đó và họ của giáo viên giảng dạy khóa học đó.

Giải pháp:

Sử dụng nhiều JOIN s trong truy vấn của bạn:

SELECT l.name AS subject_name,   
  t.last_name AS student_last_name, 
  st.last_name AS teacher_last_name 
FROM learning AS l  
JOIN subject s ON l.subject_id=s.id
JOIN student st ON l.student_id=st.id
JOIN teacher t ON l.teacher_id=t.id; 

Truy vấn này trả về các bản ghi có tên môn học và họ của học sinh và giáo viên:

subject_name s_last_name t_last_name
Âm nhạc Moore Miller
Nghệ thuật Davis Miller
Tiếng Anh Smith Mùa xuân
Nghệ thuật Davis Williams
Âm nhạc Davis Barker
Âm nhạc Moore Moore

Dữ liệu này đến từ ba bảng, vì vậy chúng tôi phải kết hợp tất cả các bảng đó lại để có được thông tin chúng tôi tìm kiếm.

Thảo luận:

Nếu bạn muốn kết hợp dữ liệu được lưu trữ trong nhiều (hơn hai) bảng, bạn nên sử dụng JOIN toán tử nhiều lần. Đầu tiên, bạn tham gia hai bảng như bình thường (sử dụng JOIN , LEFT JOIN , RIGHT JOIN hoặc FULL JOIN , nếu thích hợp). JOIN hoạt động tạo ra một "bảng ảo" để lưu trữ dữ liệu kết hợp từ hai bảng. Trong ví dụ của chúng tôi, bảng kết quả là sự kết hợp của learningsubject bảng.

Bước tiếp theo là nối bảng kết quả này với bảng thứ ba (trong ví dụ của chúng tôi là student ). Đây giống như một JOIN thông thường :bạn tham gia "bảng ảo" và bảng thứ ba với một điều kiện thích hợp. Điều kiện này thường phải bao gồm một hoặc nhiều cột từ bảng bổ sung (student ) và một hoặc nhiều cột từ "bảng ảo". Trong ví dụ của chúng tôi, chúng tôi tham chiếu đến student trong điều kiện JOIN thứ hai.

Tại thời điểm này, chúng ta có một bảng ảo mới với dữ liệu từ ba bảng. Bước cuối cùng là thêm dữ liệu từ bảng thứ tư (trong ví dụ của chúng tôi là teacher ). và tham gia bằng cách sử dụng khóa từ các bảng này (trong ví dụ của chúng tôi là id từ teacher bảng và teacher_id từ learning bảng).

Nếu bạn phải tham gia một bảng khác, bạn có thể sử dụng JOIN khác toán tử với một điều kiện thích hợp trong mệnh đề ON. Về lý thuyết, bạn có thể tham gia bao nhiêu bàn tùy thích.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AWS RDS là gì

  2. Cách tham gia trên nhiều cột

  3. Tìm hiểu khái niệm cơ bản về ghi nhật ký Java

  4. UNION ALL Tối ưu hóa

  5. Cách sử dụng Prisma