folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder En Çok Yorum Alan 5 Veri (Asp)



En Çok Yorum Alan 5 Veri (Asp)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turunc4u
    turunc4u's avatar
    Kayıt Tarihi: 16/Ağustos/2006
    Erkek

    <%
    Dim rsCom
    Set rsCom = ObjConn.Execute("SELECT TOP 5 * FROM comments where blogID<>999999 ORDER BY date DESC")
    If rsCom.EOF Then
    response.Write(""&emptyComments&"")
    Else
    while not rsCom.EOF
    %>

    <img src="../icons/comments.gif" width="10" height="11"><a href="comments.asp?id=<%=rsCom("blogID")%>"> <%=rsCom("name")%></a><br>

    <%
    rsCom.Movenext
    Wend
    rsCom.Close
    Set rsCom = Nothing
    End If
    %>

    comments tablosunu basitçe ele alırsak,

    id | name | comment | blogID

    En son yapılan yorumları aldığım kod üstte. comments tablosundan en çok yorum alan 5 veriyi almak istiyorum bunun için comments tablosundaki blogId'ler toplanmalı. Sonra yukardaki koda benzer şekilde küçükten büyüğe doğru 5 kayıt sıralancak şekilde sorgu oluşturulmalı. Ama bunu yapamıyorum. Sorun bu. Teşekkürler...

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alp
    alp's avatar
    Kayıt Tarihi: 28/Ekim/2003
    Erkek

    Hocam o iş için zamanında pek bi kasmıştım..Forumumda en çok mesajı olanları çoktan aza doğru listelemeye çalışmıştım ki senin istediğin de onunla aynı..

    Sonuç olarak yapamamıştım, group by ile falan çok denedim, ir2 ile tartıştım yine de bi çözüm bulamadık..

    Ama eğer bu illa ki lazım diyorsan;

    Uyeler'in kayıtlı olduğu tablo "uyeler" olsun, oraya bi comsayi dgibi bi field aç, integer olsun tipi

    ' rs diye bi recordset açtığını farzederek
    sql = "Select isim from uyeler"
    do while not rs.eof

    set sayi = baglanti.execute("Select COUNT(id) from comments where name=' " & rs("isim") & " ' ")

    rs("comsayi") = sayi(0)
    rs.update

    Rs.movenext
    loop

    Bu kodlarla tüm üyelerin comment sayısına bakılır comsayi fieldına o sayı işlenir..Bunu bir kez yaparak, o anki üyelerin comment sayısını buldun..
    Bu kodlar bundan sonra sana lazım değil ancak;

    Bundan sonra da comment kaydetme sayfasına bir kaç satır kod yazarak comment'ı ekleyen kişinin comsayi field değerini 1 artırırsın..
    Bu şekilde comment yazan kişilerin yazdığı comment sayısı sürekli güncel olur..


    Bu yazdıklarım bir alternatifti, "bunlara gerek yok, ben sql ile hallederim" diyorsan baya araştırman lazım, çünkü ben baya araştırmış ve uğraşmış olmama rağmen halledememiştim ve eğer halledersen burada yaz ki hepimiz faydalanalım..

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turunc4u
    turunc4u's avatar
    Kayıt Tarihi: 16/Ağustos/2006
    Erkek

    select blogId, count(*) from comments group by blogId order by count(*) desc

    Hoca bu konuyu zoque'de de sordum cevap alamadım. En çok yukardaki kod gibi bişey çıktı ama yine olmadı. Yapmak istediğim wp gibi bi blog ama olmuyor işte...

    bu junyor wp: http://www.maviye.com/

    Bu arada rasgele konuları almak için de zamnında baya uğraşmıştım. Sonunda onunda çözümünü buldum. Buraya yazayım lazım olan bulur.

    ("SELECT TOP 5 * FROM konularintablosu order by Rnd(-(1000*id)*Time())")

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alp
    alp's avatar
    Kayıt Tarihi: 28/Ekim/2003
    Erkek

    Hocam dediğim şekilde yaparsan da bişe farketmeyecek ki sen yine en çok comment'ı olan üyeleri gösterebileceksin..

    (rs diye bi recordset ile mesela)

    "Select TOP 5 isim, comsayi from uyeler order by comsayi desc"

    En çok yorumu olan 5 kişi: (çoktan aza)

    <%do while not rs.eof%>

    <%=rs("isim")%>

    <%rs.movenext
    loop%>

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alp
    alp's avatar
    Kayıt Tarihi: 28/Ekim/2003
    Erkek

    Hocam başta bi yanlış anlaşılma oldu, o yüzden benim yukarıda anlattıklarım üyeler ile ilgili falan ama sen onu blog tablona göre uyarla, hiç bişe değişmeyecek, sadece blog tablo yapına göre uyarlayacaksın...Uyeler'in mesaj sayısını nasıl +1 yapıyorsan blogun da comment sayısını her comment girişte +1 yapacaksın..

    her comment'in bir blogid'si var nasılsa, o blogid'i alıp bloglar tablosunda id'ye eşitleyip blogu bulacaksın +1 yapacaksın..Bundan önce de yukarda üyeler için yaptığım comment sayısı belirleme olayını blog tablona göre uyarlayıp bir kere yapman gerek..

     

    Ama yine de şunu bi dene;

    "SELECT name, count(blogid) from comments group by blogid order by count(blogid) desc"

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turunc4u
    turunc4u's avatar
    Kayıt Tarihi: 16/Ağustos/2006
    Erkek

    "SELECT blogId, count(blogid) from comments group by blogid order by count(blogid) desc"

    Yukardakini demek istedin heralde ama olmadı hoca 27 tane boşluk aldım sonuç olarak :)

Toplam Hit: 1190 Toplam Mesaj: 6