-
Ü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ü.
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
-
Ü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
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
-
Ü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.
-
Ü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?
-
Ü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.
-
Ü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.
-
Ü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 ?