• 29-01-2009, 21:37:15
    #1
    Arkadaşlar mysql veritabanımda "sonuc" tablomun içinde "matnet" diye bir sütun var.



    Tablom şöyle bir şey.



    username----matnet----sinif-----testno

    taner--------------3------------6---------1

    murat------------12------------6---------1

    taner--------------7-------------7--------4

    ceviz-------------15------------8---------1

    ceviz--------------5------------7---------2





    Benim amacım tüm sınavlarda toplam en fazla net yapan kişinin "username" ini ve toplam kaç net yaptığını veritabanından çekmek ve bu sayede ilk 3 ü tespit etmektir.

    Ne yapmalıyım yol gösterebilirmisiniz?
  • 29-01-2009, 21:53:39
    #2
    olayi tam anlayamadim acikcasi.
    mesela adam 2 sinava girmiş 12 net yapmiş. digeri 1 sinava girmiş 8 net yapmiş.
    bu durumda bizim bunlari kiyaslamak için girdigi sinavl sayısına göre bir ortalama mi alicaz ? yoksa kac sinava girerse girsin en yüksek neti mi ariyoruz ?
  • 29-01-2009, 22:09:39
    #3
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    olayi tam anlayamadim acikcasi.
    mesela adam 2 sinava girmiş 12 net yapmiş. digeri 1 sinava girmiş 8 net yapmiş.
    bu durumda bizim bunlari kiyaslamak için girdigi sinavl sayısına göre bir ortalama mi alicaz ? yoksa kac sinava girerse girsin en yüksek neti mi ariyoruz ?
    kaç sınava girdiyse girsin toplam nete göre sıralama yapacağım.
  • 29-01-2009, 22:17:34
    #4
    mysq sorgunu
    ORDER by matnet DESC
    olarak yaparsan en yüksek sayiyi alabilirisn.
  • 29-01-2009, 22:30:39
    #5
    ama bana matnet değil her üyenin matnetlerinin toplamının sırası lazım.
    ynai şööle bişe
    Alıntı
    "select username,sum(matnet) from sonuc where username="farklı farklı" order by sum(matnet) desc 0,3;"
    yani matnetlerinin toplamı en büyük olan ilk 3 üye tabi yukarda yazdığım çalışmıyor ama mantıken böyle bir şey arıyorum.
  • 29-01-2009, 22:43:52
    #6
    hmm..
    bunu sql sorgusu ile yapabilirmisin bilmiyorum o kadar bilgim yok,
    bunun için size önerim şu olabilir. üye tablosunda bir sütun daha acarsiniz(toplamnet). oradaki net sayisini üyenin her sinavinin sonunda update edersiniz. bu şekilde işiniz daha kolay olacaktir.
  • 29-01-2009, 22:46:05
    #7
    Gece gece yazdım yanlışlık olursa kusura bakmayın;
    <?
    $show=mysql_query("select * from students where usarname in(SELECT max(SELECT * from students count(matnet)) FROM `students` order by id desc");?>
  • 29-01-2009, 22:50:32
    #8
    Üyeliği durduruldu
    sub query uzamanimiz macchess
  • 29-01-2009, 23:25:03
    #9
    macchess adlı üyeden alıntı: mesajı görüntüle
    Gece gece yazdım yanlışlık olursa kusura bakmayın;
    <?
    $show=mysql_query("select * from students where usarname in(SELECT max(SELECT * from students count(matnet)) FROM `students` order by id desc");?>

    select SUM(matnet) from sonuc where username in(SELECT max (SELECT * from sonuc count(matnet))) FROM sonuc order by username desc ;
    dediğini şöyle yaptım ama çalışmadı,ama yaklaştığımı hissediyorum.
    sanki o ortadaki count olayı yanlış gibi geldi yani orada neden saydırdık anlayamadım ustadım bi daha bi düşünsene