PHP / MySQL SELECT deyimi - Hafif Sayı

1 Cevap php

Geçenlerde ben geliştiriyorum özel bir mesajlaşma sistemi benim deyim içinde bir delik bulduk.

İşte benim tablonun temel yapısı var:

tblpm:
unique_id    thread_id    subject    content    receiver_id    sender_id    date_sent

Ben geliştiriyorum sayfa tüm En son mesajları kullanıcı için görüntülenir gelen vardır.

Ben kullanıyorum SELECT ifadesi:

$data = mysql_query("
SELECT tblpm.* FROM tblpm 
WHERE date_sent 
IN(
   SELECT MAX(date_sent)
   FROM tblpm 
   GROUP BY message_id
  )
AND receiver_id ='$usrID' 
ORDER BY id DESC") or die(mysql_error());

Şimdi, burada ben fark ettim ne: Ben ilk kullanıcıya mesaj gönderdiğinizde, o ince gönderir ve gelen kutusunda görünmüyor. (O, o "gönderilmiş öğeler" göstermek gerektiğini olmamalıdır çünkü). Bir kullanıcı (dolayısıyla aynı parçacığı) mesajı "cevap" olsaydı Sonra, o da kutunuzda kadar güzel göstermek istiyorum.

(Diğer bir deyişle, iplik üçüncü mesajı) "cevap" cevap ise SEÇ statment bir iplik MAX (date_sent) seçmek yöneliktir Ancak, bu, artık kutunuzda görünmüyor WHERE receiver_ID = $ usrID. Peki, sorun bir sonucu olarak yani, SELECT deyimi dişli öğelerden 'herhangi' göstermek değil, bir dişli öğenin en son (date_sent) başkası tarafından "alınan" ediliyor olmasıdır.

Umarım bu mantıklı.

Buradaki ne bir görsel temsilini bulunuyor:

unique_id    thread_id    subject   receiver_id    sender_id     date_sent
   1            144         Msg         22            33         2009-07-22 //Will display fine in sent items.
   2            144         re: Msg     33            22         2009-07-23 //Will display fine in inbox of user (usrID 33).
   3            144         RE: re:Msg  22            33         2009-07-24 //Once this message is sent, the entire thread (thread_id 144) no longer displays in the inbox.

Bu konuda herhangi bir yardım çok takdir!

1 Cevap

Bu ne istediğinizi yapmalıyım gibi görünüyor:

$data = mysql_query("
SELECT tblpm.* FROM tblpm 
WHERE date_sent 
IN(
   SELECT MAX(date_sent)
   FROM tblpm 
   WHERE receiver_id ='$usrID' 
   GROUP BY message_id
  )
AND receiver_id ='$usrID' 
ORDER BY id DESC") or die(mysql_error());