Ben tasarlanmış 3 sorguları bir dize var
- Mesajlar cevap temsil aynı kimliğe sahip diğer mesajları hangi bul
- İlk sorgudan sonuçlarının mesajları (timestamp dk) mesajların bu dizenin ilk mesajı girerken belirtilen kullanıcı hangi bul
- Mesajlarının bu dizenin son mesajı (max timestamp) bulmak
Sorun üçüncü sorgu ile geliyor. Üçüncü max olarak MAX (zaman damgası) olmadan, çalıştırıldığında ben beklenen sonuçları almak, daha sonra, ikinci sorgu kadar beklenen sonuçları almak. Ben son olması gerektiği zaman ben sadece ne olursa olsun ben min veya max kullanmak ve satır sayısı gösterilen 2 satır olduğunda 1 satır döndürdü diyor olsun, mesajların her dize için ilk mesajı alıyorum, bu eklediğinizde. Herkes nerede yanlış herhangi bir fikir var mı?
$sql="SELECT reply_chunk_id
FROM messages
GROUP BY reply_chunk_id
HAVING count(reply_chunk_id) > 1 ";
$stmt16 = $conn->prepare($sql);
$result=$stmt16->execute(array('specified_user'));
while($row = $stmt16->fetch(PDO::FETCH_ASSOC)){
$sql="SELECT user,reply_chunk_id, MIN(timestamp) AS grp_timestamp
FROM messages WHERE reply_chunk_id=?
GROUP BY reply_chunk_id HAVING user=?";
$stmt17 = $conn->prepare($sql);
$result=$stmt17->execute(array($row['reply_chunk_id'],'specified_user'));
while($row2 = $stmt17->fetch(PDO::FETCH_ASSOC)){
$sql="SELECT message, MAX(timestamp) as max FROM messages WHERE reply_chunk_id=?";
$stmt18 = $conn->prepare($sql);
$result=$stmt18->execute(array($row2['reply_chunk_id']));
while($row3 = $stmt18->fetch(PDO::FETCH_ASSOC)){
echo '<p>'.$row3['message'];
}
}
}
echo ' '.$stmt18->rowCount();
Istendiği gibi, mesajlar tablo görünümü oluşturun:
CREATE TABLE IF NOT EXISTS `messages` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`timestamp` int(11) NOT NULL,
`user` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'anonimous',
`message` varchar(2000) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`topic_id` varchar(35) NOT NULL,
`reply_chunk_id` varchar(35) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;