CREATE TABLE `comments` (
`comment_id` int(11) NOT NULL AUTO_INCREMENT,
`comment_parent_id` int(11) NOT NULL DEFAULT '0',
`user_id` int(11) NOT NULL DEFAULT '0',
`comment_text` varchar(200) NOT NULL DEFAULT '',
`comment_created` int(20) NOT NULL DEFAULT '0',
`comment_updated` int(20) NOT NULL DEFAULT '0',
`comment_replies_count` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`comment_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
Chaque commentaire peut avoir plusieurs réponses, cependant, les réponses ne peuvent pas être répondues. Ainsi, lorsque quelqu'un répond à un commentaire, la ligne qu'il insère aura l'ID du commentaire auquel il a répondu dans la colonne de l'ID parent.MySQL SELECT avec une condition aide
Je voudrais récupérer tous les commentaires et si le commentaire a des réponses, je voudrais récupérer la dernière réponse.
SELECT c1.*
FROM comments c1
WHERE comment_parent_id = '0'
ORDER BY comment_created DESC;
So if c1.comment_replies_count > 0 I would like to...
SELECT c2.*
FROM comments c2
WHERE comment_parent_id = c1.comment_id
ORDER BY comment_created DESC Limit 1;
Est-ce que cela peut être réalisé en 1 requête? Ou est-il préférable de faire un autre appel à la base de données, pendant l'instruction php loop, pour récupérer la dernière réponse au commentaire?
Merci d'avance et s'il vous plaît pardonnez mon ignorance que j'apprends encore.
Dang, me battre pour elle. –
Cela fonctionne un peu, mais il ne récupère pas la dernière réponse - toujours la première. par exemple: commentaire (ID 1, parent ID 0, le texte "Bonjour") première réponse (ID 2, parent ID 1, le texte "Répondre au commentaire 1") deuxième réponse (ID 3, parent ID 1, text "Une autre réponse au commentaire 1") Même si MAX renvoie 3, il renvoie l'ID et le texte de la première réponse. – Seth
Essayez d'ajouter une clause à la clause WHERE pour comparer MAX() à c2.comment_id. – acrosman