Không biết cấu trúc cơ sở dữ liệu của bạn, nó sẽ trông giống như thế này. Lưu ý rằng bạn nên thay thế *
các ký tự với danh sách cột rõ ràng hơn mà bạn thực sự cần.
SELECT p.*, c.*, u.* FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
Lưu ý rằng nếu bạn chỉ đang cố gắng lấy số, tổng và những thứ tương tự thì bạn nên lưu vào bộ nhớ cache một số thông tin đó. Ví dụ:bạn có thể muốn lưu số nhận xét vào bộ nhớ cache trong bảng bài đăng thay vì đếm chúng trong mỗi truy vấn. Chỉ tính và cập nhật số lượng nhận xét khi thêm / xóa nhận xét.
CHỈNH SỬA: Nhận ra rằng bạn cũng muốn đính kèm dữ liệu người dùng vào mỗi nhận xét. Bạn có thể THAM GIA vào cùng một bảng nhiều lần nhưng nó trở nên xấu xí. Điều này có thể trở thành một truy vấn thực sự tốn kém. Tôi cũng bao gồm một ví dụ về cách đặt bí danh cho các cột để đỡ nhầm lẫn hơn:
SELECT p.*, c.*, u.name as post_author, u2.name as comment_author FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
LEFT JOIN users u2 ON u2.id = c.author_id