lostyazilim
tr.link

MYSQL Group By Ekleyince Order By Çalışmıyor

12 Mesajlar 3.361 Okunma
lstbozum
tr.link

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Merhaba arkadaşlar mesajların kayıt edildiği bir tablo düşünün. Tabloda AliciID = 1 olan kullanıcıların son mesajı ve en son gelen mesajın en üstte görünmesini sağlıyorum buraya kadar sorun yok ama verilerin tekrar etmemesi için Group By ile gönderenleri teke düşürmeye çalıştığımda Order By çalışmıyor.

Kısaca AliciID ile kişi kendi mesajlarını çekiyor, GonderenID olan diğer kullanıcıların son mesajlarını ve kullanıcıları çekmeye çalıştığımda Order By Desc yapınca çalışmıyor.

MYSQL kodu aşağıda ki şekilde;


SELECT * FROM mesajlar JOIN kullanicilar kullanicilar ON mesajlar.GonderenID = kullanicilar.KullaniciID WHERE AliciID = 1 GROUP BY GonderenID ORDER BY mesajlar.MesajID DESC LIMIT 10


Group By GonderenID eklenmediğinde bütün gelen mesajları listeliyor yapmak istediğim gelen mesajların sadece sonuncuları görünsün istiyorum. Group By çalışınca Order By çalışmıyor anlamadım bir türlü.
 

 

wmaraci
reklam

ontedi ontedi www.ontedi.com Kullanıcı
  • Üyelik 03.10.2013
  • Yaş/Cinsiyet 44 / E
  • Meslek Yazılım Uzmanı, Matematikçi
  • Konum Ankara
  • Ad Soyad S** T**
  • Mesajlar 1118
  • Beğeniler 325 / 324
  • Ticaret 2, (%100)
Hocam, iki tablonun tsql kodlarını buraya yaz ona göre bir şeyler kurcalayıp cevap verelim.
 

 

www.ontedi.com
www.cizgi.site

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Aslında basit kolonlar, gereken veriler aşağıda ki şekilde;

mesajşar tablosu için gerekli kolonlar

MesajID
AliciID
GonderenID
Icerik


kullanicilar için gerekli kolonlar

KullaniciID
Nick
Isim
Soyisim


AliciID = 1 yani ben
JOIN ile kullanicilar tablosuna birleştirirken mesajlar.GonderenID kolonuyla kullanicilar.KullaniciID kolonlarını kullanıyorum.
 

 

ontedi ontedi www.ontedi.com Kullanıcı
  • Üyelik 03.10.2013
  • Yaş/Cinsiyet 44 / E
  • Meslek Yazılım Uzmanı, Matematikçi
  • Konum Ankara
  • Ad Soyad S** T**
  • Mesajlar 1118
  • Beğeniler 325 / 324
  • Ticaret 2, (%100)
Yapmak istediğin şey, verilen bir kullanıcının aldığı son mesajı mı görmek istiyorsun.
 

 

www.ontedi.com
www.cizgi.site
wmaraci
wmaraci

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
evet normalde yapması lazım ama çok saçma bir durum. Group by GonderenID eklemediğimde tüm veriler yeniden eskiye sıralanıyor ama gruplandırıp sadece kişi başına son veri görünsün istediğimde bu sefer her kullanıcının ilk verisi geliyor ve sıralama da olmuyor.
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Arkadaşlar tablo felan birleştirmeden aşağıda ki tek bir tablonun son verilerini nasıl çekebilirim?

mesajlar

MesajID
AliciID
GonderenID
Icerik


AliciID kişinin kendisi mesela AliciID = 1 buna göre GonderenID diğer kullanıcılar. Diğer göndenlerden sadece son mesajları nasıl çekebilirim?


SELECT * FROM mesajlar WHERE AliciID = 1 GROUP BY GonderenID ORDER BY MesajID DESC


normalde bu tabloya göre olması lazım ama olmuyor. Gruplamayı güzel yapıyor ama sadece ilk mesajlarını gösteriyor gönderenlerin. Order By Desc deniyorum ama yapmıyor. Önce gruplamayı yaptığı için Order By gruplama işleminden sonra devreye giriyor. Sanırım önce Order By işlemini yaptırıp sonra gruplama yaptırmalıyım. Yada başka bir yöntem varmı arkadaşlar?
 

 

YusufOzcan YusufOzcan WM Aracı Banlı Kullanıcı
  • Üyelik 19.01.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad Y** Ö**
  • Mesajlar 365
  • Beğeniler 51 / 63
  • Ticaret 31, (%100)
-----
 

 

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
teşekkürler cevabınız için ama verdiğiniz cevap hiç bir şekilde doğru değil. Sizin yaptığınız şey sadece AliciID = 1 değerinin son verisini çek demek. Ama diğer kullanıcılardan mesaj gelirse? sadece 1 kullanıcının mesajı görünecek. Alıntı olarak gösterdiğiniz yazıyı okursanız diğer gönderenlerden sadece son mesajları nasıl çekebilirim demişim yani çoğul veri çekmem gerek. Kısaca;

Ali'nin Mesajları > Son Mesaj
Veli'nin Mesajları > Son Mesaj
Ayşe'nin Mesajları > Son Mesaj
Merve'nin Mesajları > Son Mesaj

şeklinde sıralanmasını istiyorum. Yani kısaca bana gelen tüm kullanıcıların sadece son mesajını görmek istiyorum. Önce gönderenlerin mesajlarını gönderenleri çekip sorguyu yaptıktan sonra foreach ile daha sonra yeni bir sorgu başlatıp tekrar aynı tablodan kişilerin id değerine göre mesajlarını çekebilirim işi kolaylaştırır ama sistemi yorar. Şimdi kolay çözüm kasmaz ama ilerisi için ekstra yük olabilir diye düşünüyorum. Benim yapmam gereken AliciID = Ben, GonderenID değerlerini gruplama yapıp sadece son mesajlarını göstermek.
 

 

mehmet01 mehmet01 WM Aracı Kullanıcı
  • Üyelik 12.03.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek ...
  • Konum Adana
  • Ad Soyad M** Ç**
  • Mesajlar 665
  • Beğeniler 329 / 328
  • Ticaret 1, (%100)
Konuyu hortlatmak gibi olacak ama çözüm buldunuz mu acaba? Ben de benzer bir konu açmıştım bir süre önce ama ne ben derdimi anlatabildim ne de kimse söylediğimi anlayamadı. Ne yaptıysam da çözemedim olayı. "Güzel hosting" kullanıyorum ve önceki hosting'imde sorunsuz çalışan kod burada çalışmamaya başladı. Şimdi benzer bir fonksiyon daha hazırlıyorum ama bunda da yine group by sorun çıkarıyor. GROUP by olmadan çok güzel listeliyor dediğiniz gibi, ama aynı üyeden birden fazla listeliyor. Her üyeyi yalnızca bir kere listelemek için de group by'dan başka yöntem yok galiba, ya da ben bulamadım.
 

 

ogulcanoral ogulcanoral WM Aracı Kullanıcı
  • Üyelik 29.09.2018
  • Yaş/Cinsiyet 28 / E
  • Meslek web yazılım
  • Konum İstanbul Avrupa
  • Ad Soyad O** O**
  • Mesajlar 1
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
Konuyu hortlatmak istiyorum, hocam son durum nedir, aynı problemi yaşayanlardan biride benim, neden order by çalışmıyor bir türlü üstesinden gelemedim ?
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al