MySQL bir durum yardımıyla SEÇİMİ

2 Cevap php
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

Her yorum birden fazla cevap olabilir, ancak yanıtlar cevap olamaz. Birisi bir yorumuna cevap geldiğinde Yani, onlar eklemek satır onlar üst kimliği sütununda cevap Yorumlarınız için kimliğine sahip olur.

Ben bütün yorumları almak ve açıklama cevap varsa, ben son yanıt almak istiyorum istiyorum.

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;

Bu 1 sorguda elde edilebilir? Yoksa yorumuna son cevap almak için php döngü deyiminin sırasında veritabanına başka bir çağrı, yapılacak en iyi mi?

Teşekkür peşin ve ben hala öğreniyorum olarak benim cehalet pardon lütfen.

2 Cevap

Sen kendi üzerine tabloyu geri katılabilirsiniz:

SELECT c1.*, c2.*, MAX(c2.comment_id)
FROM comments c1 LEFT JOIN comments c2 ON c1.comment_id = c2.comment_parent_id
WHERE c1.comment_parent_id = '0' 
GROUP BY c1.comment_id
ORDER BY c1.comment_created DESC

Bir sub-select deneyin:

SELECT * FROM comments WHERE comment_parent_id in (
SELECT c1.comment_id 
FROM comments c1 
WHERE c1.comment_parent_id = '0' 
AND c1.comment_replies_count > 0
ORDER BY comment_created DESC)
ORDER BY comment_created DESC Limit 1;