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
Каждый комментарий может иметь несколько ответов, однако ответы не могут быть отвечены. Поэтому, когда кто-то отвечает на комментарий, строка, которую они вставляют, будет иметь идентификатор для комментария, на который они ответили, в столбце родительского идентификатора.MySQL SELECT с условием
Я хотел бы получить все комментарии, и если в комментарии есть ответы, я хотел бы получить последний ответ.
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;
Возможно ли это в 1 запросе? Или Лучше всего сделать другой вызов в базе данных во время инструкции php loop для получения последнего ответа на комментарий?
Заранее благодарим вас и прошу простить мое невежество, пока я все еще учусь.
Dang, бил меня к нему. –
Этот вид работает, но он не возвращает последний ответ - всегда первый. например: комментария (ID 1, родитель ID 0, текст "Hello") первый ответ (ID 2, родитель ID 1, текст "Ответить на комментарий 1") второго ответа (ID 3, родительский ID 1, текст «Еще один ответ на комментарий 1») Несмотря на то, что MAX возвращает 3, он возвращает идентификатор и текст из первого ответа. – Seth
Попробуйте добавить предложение в предложение WHERE, чтобы сравнить MAX() с c2.comment_id. – acrosman