Chỉ cần thực hiện nối nhóm cùng với nối giữa hai bảng:
SELECT
s.student_name AS Students,
GROUP_CONCAT(e.event_name) AS Events
FROM students s
LEFT JOIN events e
ON s.event_id = e.event_id
GROUP BY
s.student_name;
Lưu ý rằng lược đồ bảng của bạn dường như không được chuẩn hóa hoàn toàn. Thông thường, cách xử lý vấn đề này là có một bảng duy nhất cho thông tin sinh viên, một bảng duy nhất cho các sự kiện và sau đó là một điểm giao nhau bảng kết nối học sinh với các sự kiện. students
của bạn bảng dường như đang phục vụ cả dưới dạng bảng nối và bảng chứa thông tin học sinh duy nhất.
Vì vậy, cách tốt hơn để tiếp tục ở đây là tái cấu trúc lại students
để chứa cái này:
(1, 'student1'),
(2, 'student2'),
(3, 'student3');
Và tạo một bảng nối mới student_event
để chứa mối quan hệ giữa sinh viên và các sự kiện:
(id, student_id, event_id)
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 2, 3),
(6, 3, 2),
(7, 3, 4);