sql >> Base de Datos >  >> RDS >> Mysql

mysql/php:muestra publicaciones y para cada publicación todos los comentarios

Sin conocer la estructura de su base de datos, debería verse así. Tenga en cuenta que debe reemplazar el * caracteres con listas más explícitas de columnas que realmente necesita.

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

Tenga en cuenta que si solo está tratando de obtener conteos, sumas y cosas por el estilo, es una buena idea almacenar en caché parte de esa información. Por ejemplo, es posible que desee almacenar en caché el recuento de comentarios en la tabla de publicaciones en lugar de contarlos en cada consulta. Solo cuente y actualice el recuento de comentarios cuando agregue o elimine un comentario.

EDITAR: Me di cuenta de que también quería adjuntar datos de usuario a cada comentario. Puedes UNIRTE a la misma mesa más de una vez pero se pone feo. Esto podría convertirse en una consulta realmente costosa. También incluyo un ejemplo de cómo alias de columnas para que sea menos confuso:

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