• 25-06-2014, 19:48:50
    #1
    SQL de messages adında tablom var.

    messagesid | session_id | musers_id | message | tarih | status


    Ben kişiye gelen mesajları gruplamak ve tarihe göre listelemek istiyorum fakat çalışmıyor. Ne yapmalıyım.

    $msgSql = mysql_query("SELECT * FROM messages INNER JOIN users ON users.usersid = messages.session_id WHERE messages.musers_id = '{$_SESSION['session_id']}' GROUP BY messages.musers_id ORDER BY messages.tarih DESC");
    Tablodaki session_id = gönderen kişi
    musers_id = alan kişi

    Bu sorgu ile gruplamayı yapıyorum fakat kişiye gelen mesajlardan ilk gelen mesajı gösteriyor.
    Yani demek istediğim
    a kullanıcısı b kullanıcısına 1 gün önce mesaj atmış.
    a kullanıcısının 1 gün önceki mesajını gösteriyor gruplamada fakat ben yeni gelen mesajını göstermek istiyorum bunu nasıl düzeltebilirim ?



    SELECT *,MAX(messages.tarih) as msgtarih FROM messages INNER JOIN users ON users.usersid = messages.session_id WHERE messages.musers_id = '{$_SESSION['session_id']}' GROUP BY messages.musers_id ORDER BY messages.tarih DESC LIMIT 1
    ile tarih sorunumu çözdüm. Peki en son mesajı nasıl gösterebilirim ?

    ORDER BY messages.mesaj dediğimde olmuyor
  • 25-06-2014, 22:41:45
    #2
    Mesajları neye göre gruplamak istiyorsunuz?
    Sonuçta tablodaki verinin en sonunu göstermek için select * from tablo ismi order by id desc demek yeterli olur.
  • 26-06-2014, 08:21:48
    #3
    framework adlı üyeden alıntı: mesajı görüntüle
    Mesajları neye göre gruplamak istiyorsunuz?
    Sonuçta tablodaki verinin en sonunu göstermek için select * from tablo ismi order by id desc demek yeterli olur.
    Kişi login olduğunda $_SESSION["session_id"] = $kisinin_idsi şeklinde atıyorum.

    Mesajlar penceresine geldiğimde login olmuş kişiye gelen mesajları listeliyorum.

    Örnek veriyorum : ben x kullanıcısıyım. Sen y kullanıcısısın.

    x kullanıcısının tüm mesajlarını göstermek yerine gruplayıp. üzerine tıklandığında farklı bir pencerede açılmasını sağlıyorum.

    dediğiniz doğru fakat GROUP BY ile ORDER BY aynı anda kullanınca istediğim sonucu vermiyor.

    Edit : Sorun halloldu.