Birden fazla sorgu dizesinde SQL MAX ()

0 Cevap php

Ben tasarlanmış 3 sorguları bir dize var

  1. Mesajlar cevap temsil aynı kimliğe sahip diğer mesajları hangi bul
  2. İlk sorgudan sonuçlarının mesajları (timestamp dk) mesajların bu dizenin ilk mesajı girerken belirtilen kullanıcı hangi bul
  3. 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 ;

0 Cevap