• 06-07-2021, 15:21:48
    #10
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Sql Sorgusu ile çekiyorum ama burada sorunum şu önce gruplama yapıp sonra sıralama yapıyorum sorguda ben sıralamada en son olan satırı göstersin istiyorum ama o ilk satırı getiriyor ne yapabilirim ?

    Kodum aşağıdaki Gibi ama Sorunumu çözemedim. Ne denediysem gruplama yaptığım için son gelen veriyi ekrana alamadım.

    SELECT u.name_surname ADSOYAD, u.user_Kavatar AVATAR, u.user_id UID, m.baslik BASLIK, m.mesaj_tarih TARIH, m.mesaj MESAJ, m.alan_durum ADURUM, m.token TOKEN from mesaj m LEFT JOIN user u on u.user_id = m.gonderen_id where alan_id=222 and m.gonderen_durum IN (1,2) GROUP BY m.token order by alan_durum ASC, m.mesaj_id DESC limit 0,6
    last komutunu dener misiniz
  • 06-07-2021, 16:56:37
    #11
    Dönen Hata.

    MySQL çıktısı: Belgeler #1248 - Every derived table must have its own alias

    Mufugo adlı üyeden alıntı: mesajı görüntüle
    
      SELECT * FROM (SELECT u.name_surname ADSOYAD, u.user_Kavatar AVATAR, u.user_id UID, m.baslik BASLIK, m.mesaj_tarih TARIH, m.mesaj MESAJ, m.alan_durum ADURUM, m.token TOKEN from mesaj m LEFT JOIN user u on u.user_id = m.gonderen_id where alan_id=222 and m.gonderen_durum IN (1,2) GROUP BY m.token order by alan_durum ASC, m.mesaj_id DESC limit 0,6)Query
    
    Bu şekilde dener misiniz.
  • 06-07-2021, 17:01:28
    #12
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Dönen Hata.

    MySQL çıktısı: Belgeler #1248 - Every derived table must have its own alias
    Query kısmını silip o kısıma "AS Sorgu" yazar mısınız sorgu yerine farklı isimde verebilirsiniz. Sorguya bir isim vermiş oluyorsunuz bu işlem ile. MSSQL kullanıyorum normalde orada bir hata almıyoruz. MySQL de sorguya bir isim istiyor.
  • 06-07-2021, 17:03:40
    #13
    Bu Sefer çalıştı ama dönen değer aynı şekilde döndü değişen bir şey olmadı son veri gelmedi ilk veri geldi.

    Mufugo adlı üyeden alıntı: mesajı görüntüle
    Query kısmını silip o kısıma "AS Sorgu" yazar mısınız sorgu yerine farklı isimde verebilirsiniz. Sorguya bir isim vermiş oluyorsunuz bu işlem ile. MSSQL kullanıyorum normalde orada bir hata almıyoruz. MySQL de sorguya bir isim istiyor.
  • 06-07-2021, 17:40:10
    #14
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Bu Sefer çalıştı ama dönen değer aynı şekilde döndü değişen bir şey olmadı son veri gelmedi ilk veri geldi.
    SELECT u.name_surname ADSOYAD, u.user_Kavatar AVATAR, u.user_id UID, m.baslik BASLIK, m.mesaj_tarih TARIH, m.mesaj MESAJ, m.alan_durum ADURUM, m.token TOKEN from mesaj m LEFT JOIN user u on u.user_id = m.gonderen_id where alan_id=222 and m.gonderen_durum IN (1,2) GROUP BY m.token order by alan_durum ASC, m.mesaj_id DESC limit 0,6

    Hocam GROUP BY yapmadan önce yaptığınız sıralama istediğiniz şekilde çıkıyor muydu? Denediniz mi?

    Şöyle bir çözüm daha buldum internette;

    SELECT t.uuid, t.version, t.datetime 
    FROM table t JOIN (
        SELECT version, MAX(datetime) Maxdatetime
        FROM table
        WHERE uuid='bla'
        GROUP BY version
    ) r ON t.version = r.version AND t.datetime = r.Maxdatetime
    WHERE t.uuid='bla'
    ORDER BY t.datetime desc
    Kaynak: https://stackoverflow.com/questions/...-order-by-desc
  • 07-07-2021, 12:48:28
    #15
    SQL cümlesi yanlış gibi.
    Select...from kümesindeki alanları group by yapmak zorundasın veya max-min vb. işlem uygulayabilirsin.

    token'a göre gruplayıp son 6 mesajı almak için aşağıdaki gibi birşey yazılmalı. Mesaj içeriği için bu sorgu tekrar select çekip son 6 mesaj içeriğini alabilirsin. Yani bu kodun yarısı


    SELECT
    MAX(m.mesaj_id) AS 'mesaj_id',
    m.token TOKEN
    
    FROM
    mesaj m
    LEFT JOIN [user] u ON
    u.user_id = m.gonderen_id
    
    WHERE
    m.alan_id = 222
    AND m.gonderen_durum IN (1, 2)
    
    GROUP BY
    m.token
    
    ORDER BY
    mesaj_id
    
    limit 0,6
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Sql Sorgusu ile çekiyorum ama burada sorunum şu önce gruplama yapıp sonra sıralama yapıyorum sorguda ben sıralamada en son olan satırı göstersin istiyorum ama o ilk satırı getiriyor ne yapabilirim ?

    Kodum aşağıdaki Gibi ama Sorunumu çözemedim. Ne denediysem gruplama yaptığım için son gelen veriyi ekrana alamadım.

    SELECT u.name_surname ADSOYAD, u.user_Kavatar AVATAR, u.user_id UID, m.baslik BASLIK, m.mesaj_tarih TARIH, m.mesaj MESAJ, m.alan_durum ADURUM, m.token TOKEN from mesaj m LEFT JOIN user u on u.user_id = m.gonderen_id where alan_id=222 and m.gonderen_durum IN (1,2) GROUP BY m.token order by alan_durum ASC, m.mesaj_id DESC limit 0,6
  • 07-07-2021, 14:06:05
    #16
    Herkeze Teşekkür Ederim Sorguyu yazdım ama Tam istediğim gibi olmadı gene ama yardımcı olan herkese teşekkür ederim.

    SELECT u.name_surname ADSOYAD, u.user_Kavatar AVATAR, u.user_id UID, m.baslik BASLIK, m.mesaj_tarih TARIH, m.mesaj MESAJ, m.alan_durum ADURUM, m.token TOKEN
    FROM mesaj m 
    INNER JOIN
    (
        SELECT mesaj_id, MAX(mesaj_id) AS max_time
        FROM mesaj
        GROUP BY token
    ) p2
        ON  m.mesaj_id = p2.max_time LEFT JOIN user u on u.user_id=m.gonderen_id  where (m.alan_id=$uid or m.gonderen_id=$uid) and m.gonderen_durum IN (1,2) LIMIT $Goster,$Limit
  • 08-07-2021, 14:02:56
    #17
    Alıntı
    SELECT
    u.name_surname ADSOYAD,
    u.user_Kavatar AVATAR,
    u.user_id UID,
    m.baslik BASLIK,
    m.mesaj_tarih TARIH,
    m.mesaj MESAJ,
    m.alan_durum ADURUM,
    m.token TOKEN
    from mesaj m
    LEFT JOIN user u on u.user_id = m.gonderen_id
    where
    alan_id=222 and
    m.gonderen_durum IN (1,2)
    GROUP BY m.token
    order by alan_durum ASC, m.mesaj_id DESC limit 0,6
    Alan_ID = 222 derken, hangi tablodaki Alan_ID? Bilgisayar bunu anlayamaz. Oraya alias olan (M veya U) m.Alan_ID veya U.Alan_ID gibi alias tanımı yapmak zorundasınız.
  • 08-07-2021, 14:05:05
    #18
    Orada Sorun yok onu düzelttim Kabul ediyor Sorguyuda yazdım en son yazdığım cevaba bakabilirsin. Sorunum Farklı benim kurguyu değiştirmem gerekiyor biraz. Teşekkürler.

    mkozdogan adlı üyeden alıntı: mesajı görüntüle
    Alan_ID = 222 derken, hangi tablodaki Alan_ID? Bilgisayar bunu anlayamaz. Oraya alias olan (M veya U) m.Alan_ID veya U.Alan_ID gibi alias tanımı yapmak zorundasınız.