• 31-01-2016, 23:29:26
    #1
    Merhaba,

    kullanici ve icerik adinda iki tablom var.

    Kullanici tablosunda siteye uye olan kulanicilarin bilgileri.
    Icerik tablosunda ise icerik bilgileri ve icerige verilen puanlar var.

    Yapmak istedigim girdigi iceriklerde en cok puan alanlari siralamak. Iceriklere hem eksi hemde arti puan veriliyor.

    icerik tablosundaki alanlar:

    icerik no, user no, icerik basligi ...., puan

    en iyi puandan en kotuye dogru siraamak istiyorum. Fakat oncelikle puan kisminda her uyenin puanlarinin toplamini bulup daha sonra bir dongu ile siralatmam gerekiyor.

    Istedigimi nasil yapabilirim ?

    veritabaninda cektigim veriyi kullanici bazinda puanlarini toplatip daha sonra bunlari en iyiden kotuye siralatacagim.
  • 01-02-2016, 13:33:43
    #2
    Merhaba,

    İçerik tablonuzda farklı kullanıcılar nasıl birden fazla puan verebiliyor açıklar mısınız?
  • 01-02-2016, 14:15:06
    #3
    birden fazla değil, 1,2,3,4,5,6,7 ve -1,-2,-3,-4,-5 şeklide her girdikleri içeriğe ayrı puan veriliyor. Diyelimki 10 tane içerik girdi, her içeriğe ayrı puan verildi tabikide tek bir puan oluyor.

    Mesela
    A içeriğine 5 puan verdim
    B içeriğine -3 puan verdim
    C içeriğine 6 puan verdim

    Üç içeriğin toplam puanı 8 yani hepsinin toplamını alıyorum bunu içerik sayısına bölüp ortalama aldırmıyorum. Çünkü hem eksi hemde artı tutarlar olduğu için önemli olan kaç puan aldığı ortalaması değil.

    Her bir içerik bir kişi tarafından ve bir kere puan veriliyor. Bir nevi içeriğe verilen başarı puanı.

    içerikler tablosunda ise userID ve contentSCORE olarak hem içeriğin hangi kullanıcıya ait olduğunu hemde kaç puan veri,ldiğini gösteren sütunlar mevcut.

    İÇERİK TABLOSU:

    İçerik A userID 3 contentSCORE 5
    İçerik B userID 2 contentSCORE -3
    İçerik C userID 2 contentSCORE 6
    İçerik D userID 1 conetntSCORE 2

    Bu durumda benim sıralamam

    USER 3 PUAN 5
    USER 2 PUAN 3
    USER 1 PUAN 2

    Şeklinde olacak fakat bir türlü puana göre sıralamayı nasıl yapacağımı kafamda kuramadım.
  • 01-02-2016, 14:41:30
    #4
    O zaman şöyle bir sorgu senin işini görür diye düşünüyorum.

    "SELECT SUM(puan) UserPuan, UserID FROM `table` GROUP BY UserID ORDER BY UserPuan DESC"
    Yukarıdaki sorguda puan, table ve UserID field isimlerini kendinkinle değiştir,

    SUM(puan) UserPuan buradaki UserPuan artık yeni puanlarının hesaplanmış field ismidir.

    Sorgu dönüşü
    UserPuan | UserID
    5 | 3
    2 | 1

    gibi
  • 01-02-2016, 14:56:27
    #5
    Hocam,

    Teşekkürler, kodu benim kodlara uyarlayacağım. Yazarım buraya olumlu olumsuz.