Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql/php :affiche les articles et pour chaque article tous les commentaires

Ne connaissant pas la structure de votre base de données, elle devrait ressembler à ceci. Notez que vous devez remplacer le * caractères avec des listes plus explicites de colonnes dont vous avez réellement besoin.

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

Notez que si vous essayez simplement d'obtenir des décomptes, des sommes et des choses comme ça, c'est une bonne idée de mettre en cache certaines de ces informations. Par exemple, vous pouvez mettre en cache le nombre de commentaires dans le tableau des publications au lieu de les compter à chaque requête. Comptez et mettez à jour le nombre de commentaires uniquement lors de l'ajout/de la suppression d'un commentaire.

MODIF : J'ai réalisé que vous souhaitiez également joindre des données utilisateur à chaque commentaire. Vous pouvez REJOINDRE la même table plus d'une fois mais ça devient moche. Cela pourrait se transformer en une requête très coûteuse. J'inclus également un exemple de la façon d'aliaser les colonnes pour que ce soit moins déroutant :

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