J'ai 3 tables différentes:SQL obtenir des données de plusieurs tables
Messages, Commentaires et Avatar. Ce que je voudrais faire est le suivant: Recevez tous les messages dans la base de données, en comptant pour chaque message les commentaires et en montrant l'avatar de chaque utilisateur.
Voici comment les tables sont construites:
Messages -> messages_id, user_id, titre, un message
Commentaires -> comments_id, messages_id, commentent
Avatar -> avatar_id, user_id, avatar
J'ai essayé les éléments suivants:
SELECT *, COUNT(comments.comments_id) AS commentCount
FROM messages
LEFT JOIN comments ON messages.messages_id = comments.messages_id
LEFT JOIN avatar on messages.user_id = avatar.user_id
Mais je reçois seulement une ligne pour les messages, le reste n'est pas visible.
Une idée de ce que je fais mal ici?
Merci David pour votre réponse. Mais je reçois toujours un seul message au lieu des 2 messages que j'ai dans ma base de données. Messages_id est en effet unique dans les messages et user_id est unique dans avatar. Peut-être que je dois spécifier que tous les messages n'ont pas de commentaires. – moonwalker
@moonwalker vérifie la deuxième requête que j'ai écrite. Si cela ne fonctionne pas, il serait utile d'avoir un exemple de données de table, de sortie attendue et de sortie réelle. – DavidEG
Merci beaucoup David. Votre deuxième solution fonctionne très bien. Je vais l'étudier et essayer de comprendre ce que j'ai fait de mal. – moonwalker