wmaraci reklam
lidertakipci

Algoritmayla Sıralamak

13 Mesajlar 2.446 Okunma
advertseo
wmaraci reklam

karbonat karbonat WM Aracı Kullanıcı
  • Üyelik 06.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum
  • Ad Soyad ** **
  • Mesajlar 112
  • Beğeniler 7 / 32
  • Ticaret 0, (%0)
Mysql'dan çektiğim verileri kendi algoritmama göre sıralamak istiyorum. Açıklamak gerekirse veriler şu şekilde olsun;



Bu verileri (Kolon1/Kolon2)+Kolon3 işlemine göre büyükten küçüğe doğru sıralayacağım.
 

 

wmaraci
reklam

cokbaska cokbaska WM Aracı Kullanıcı
  • Üyelik 21.10.2011
  • Yaş/Cinsiyet 33 /
  • Meslek Serbest Meslek
  • Konum
  • Ad Soyad E** B**
  • Mesajlar 712
  • Beğeniler 22 / 115
  • Ticaret 9, (%100)
order by desc büyükten küçüğe sıralama , örnek : SELECT tablo_adi from Kolon1 ORDER BY Kolon1 DESC
 

 

karbonat karbonat WM Aracı Kullanıcı
  • Üyelik 06.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum
  • Ad Soyad ** **
  • Mesajlar 112
  • Beğeniler 7 / 32
  • Ticaret 0, (%0)

cokbaska adlı üyeden alıntı

order by desc büyükten küçüğe sıralama , örnek : SELECT tablo_adi from Kolon1 ORDER BY Kolon1 DESC


Belirlediğim algoritmaya göre sıralama yapmak istiyorum. Yoksa bir kolona göre büyükten küçüğe sıralama yapmayı çoğu kişi gibi ben de biliyorum.
 

 

cokbaska cokbaska WM Aracı Kullanıcı
  • Üyelik 21.10.2011
  • Yaş/Cinsiyet 33 /
  • Meslek Serbest Meslek
  • Konum
  • Ad Soyad E** B**
  • Mesajlar 712
  • Beğeniler 22 / 115
  • Ticaret 9, (%100)

karbonat adlı üyeden alıntı

Belirlediğim algoritmaya göre sıralama yapmak istiyorum. Yoksa bir kolona göre büyükten küçüğe sıralama yapmayı çoğu kişi gibi ben de biliyorum.


örnek sorgu : SELECT kolon1,kolon2,kolon3 FROM tablo ORDER BY kolon1,kolon2,kolon3 DESC
 

 

wmaraci
wmaraci

karbonat karbonat WM Aracı Kullanıcı
  • Üyelik 06.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum
  • Ad Soyad ** **
  • Mesajlar 112
  • Beğeniler 7 / 32
  • Ticaret 0, (%0)

cokbaska adlı üyeden alıntı

örnek sorgu : SELECT kolon1,kolon2,kolon3 FROM tablo ORDER BY kolon1,kolon2,kolon3 DESC


Malesef o şekilde de istediğim sonucu vermiyor. Önce kolon 1'e göre sıralıyor. Sonra kolon1'i eşit olanları kolon2'ye göre kendi içinde sıralıyor, sonra da kolon3'e göre kendi içinde sıralama yapıyor. Benim beklediğim her verinin algoritmayla değerini hesaplayıp ona göre sıralama yapabilecek bir kod.
 

 

Omercitak Omercitak Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 01.08.2012
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci / Php Developer
  • Konum Yalova
  • Ad Soyad ** **
  • Mesajlar 174
  • Beğeniler 64 / 45
  • Ticaret 1, (%100)
önce while veya foreach döngüsü içinde $yenisayi değişkenini aşağıdaki şekilde yap. döngü içnde olduğundan array olacaktır. sonra arsort() fonksiyonu ile büyükten küçüğe sırala

$yenisayi = ceil ($kolon1/$kolon2)+$kolon3;

arsort($yenisayi);
karbonat

kişi bu mesajı beğendi.

karbonat karbonat WM Aracı Kullanıcı
  • Üyelik 06.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum
  • Ad Soyad ** **
  • Mesajlar 112
  • Beğeniler 7 / 32
  • Ticaret 0, (%0)
Yardımlarınız için teşekkürler.

Ömer Çıtak adlı üyeden alıntı

önce while veya foreach döngüsü içinde $yenisayi değişkenini aşağıdaki şekilde yap. döngü içnde olduğundan array olacaktır. sonra arsort() fonksiyonu ile büyükten küçüğe sırala

$yenisayi = ceil ($kolon1/$kolon2)+$kolon3;

arsort($yenisayi);


Sanırım bu sorunumu halleder. Uygun bir zamanda deneyeceğim.
 

 

Hurkal Hurkal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 05.08.2011
  • Yaş/Cinsiyet - / E
  • Meslek Öğretmen
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 382
  • Beğeniler 89 / 114
  • Ticaret 0, (%0)

Ömer Çıtak adlı üyeden alıntı

önce while veya foreach döngüsü içinde $yenisayi değişkenini aşağıdaki şekilde yap. döngü içnde olduğundan array olacaktır. sonra arsort() fonksiyonu ile büyükten küçüğe sırala

$yenisayi = ceil ($kolon1/$kolon2)+$kolon3;

arsort($yenisayi);


Bu sorunu kesinlikle çözecektir ancak veritabanında binlerce verinin olabileceğini düşünürsek hızımız çok azalacaktır. Bunun yerine bir Kolon4 oluşturup daha kaydetme aşamsında veya değişiklik yapılışında bu 3 değere göre hesaplanmış veriyi Kolon4'e yazdırıp Kolon4'e göre sıralama yapmak ve bu sütuna INDEX atamak bizi onlarca kat hızlandırır.
 

 

karbonat karbonat WM Aracı Kullanıcı
  • Üyelik 06.05.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum
  • Ad Soyad ** **
  • Mesajlar 112
  • Beğeniler 7 / 32
  • Ticaret 0, (%0)

Hürkal adlı üyeden alıntı

Bu sorunu kesinlikle çözecektir ancak veritabanında binlerce verinin olabileceğini düşünürsek hızımız çok azalacaktır. Bunun yerine bir Kolon4 oluşturup daha kaydetme aşamsında veya değişiklik yapılışında bu 3 değere göre hesaplanmış veriyi Kolon4'e yazdırıp Kolon4'e göre sıralama yapmak ve bu sütuna INDEX atamak bizi onlarca kat hızlandırır.


Onu düşündüm ama ben yazının yazılışının üzerinden geçen zamanı da işin içine katmak istiyorum. Hem yeni ve hem de beğenilen yazıları öne çıkarmak istiyorum.
 

 

Hurkal Hurkal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 05.08.2011
  • Yaş/Cinsiyet - / E
  • Meslek Öğretmen
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 382
  • Beğeniler 89 / 114
  • Ticaret 0, (%0)
Benzer şekilde bir puanlama getirebilirsiniz yazılarınıza. Örneğin gün başına maksimum puan tanımlarsınız, 250 olsun. n. gün yayınlanan yazı için işlem şu olsun:

250 - (n-1) x 10

Böylece son 25 günlük yazıya en fazla 250 puan olacak şekilde puan vermiş olursunuz. Bunun yanında her beğeniye de 10 puan verildiğini varsayalım. Bir yazı 20 beğeni aldığında puanı haliyle 20 x 10 = 200 olacaktır.

Yazının 1. gün puanı: 250 + 200 = 450
Yazının 10. gün puanı: 160 + 200 = 360
Yazının 20. gün puanı: 60 + 200 = 260
...

Böylece gittikçe eskiyen ancak çok beğeni almayan yazı aşağıya kayarken beğeni almaya devam eden yazı üstte kalmaya devam edecektir, elbette hangisini daha fazla istiyorsanız ona göre verebilirsiniz.

Ben bu tarz işlemler için veritabanından ayrılmayın derim.

Tüm yazıların puan hesaplamasını da her saat başı çalışacak şekilde ayarlanmış bir zamanlanmış görev (cronjob) ile yapabilirsiniz.
karbonat

kişi bu mesajı beğendi.

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