• 12-06-2021, 17:39:06
    #1
    Merhabalar,


    Mysqlde bir tablo düşünün bunda user_id ve hit var

    ... user_id hit ...
    10 16
    10 6
    11 5

    13 10
    13 41
    13 0


    Bu tablolara gidip, bunları şu şekilde nasıl sıralarım?

    Sıralama:
    Sıra1 = ID 13 Toplam hit a
    Sıra2 = ID 10 Toplam hit b
    Sıra3 = ID 11 Toplam hit c

    Yardımcı olur musunuz?
  • 12-06-2021, 17:42:54
    #2
    Dogru mu anladim ayni idye sahip olanlarin hit sayisinin toplamini yazdirmak istiyorsunuz?
  • 12-06-2021, 17:45:58
    #3
    Kara adlı üyeden alıntı: mesajı görüntüle
    Dogru mu anladim ayni idye sahip olanlarin hit sayisinin toplamini yazdirmak istiyorsunuz?
    Şöyle, hitlere göre sıralama yapmak istiyorum. Ancak birden fazla aynı id değerine sahip veri olabilir dolayısıyla onları kendi aralarında sıralayıp aynı id değerine sahip veriyi sıralayabilir. Benim istediğim bu aynı idye sahip olan verilerin hitlerini önce toplatması, sonra da o toplanan hitleri sıralaması ve idyi de yazdırabilimesi.
  • 12-06-2021, 17:48:21
    #4
    YazilimciBiri adlı üyeden alıntı: mesajı görüntüle
    Şöyle, hitlere göre sıralama yapmak istiyorum. Ancak birden fazla aynı id değerine sahip veri olabilir dolayısıyla onları kendi aralarında sıralayıp aynı id değerine sahip veriyi sıralayabilir. Benim istediğim bu aynı idye sahip olan verilerin hitlerini önce toplatması, sonra da o toplanan hitleri sıralaması ve idyi de yazdırabilimesi.
    Anladım hocam anydesk var ise bana atarsanız sisteme bakmak istetim.
  • 12-06-2021, 17:49:21
    #5
    Hocam şu şekilde yapabilirsin:

    $all=array();
    //for ya da foreach döngüsünde (hangisi uygunsa sana),
    //for diyelim:

    for($i=0;$i<count($tum_kayitlar);$i++){
    if(isset($all[$tum_kayitlar[$i]["id"]])){
    $all[$tum_kayitlar[$i]["id"]]=$tum_kayitlar[$i]["hit"];
    }
    else{
    $all[$tum_kayitlar[$i]["id"]]+=$tum_kayitlar[$i]["hit"];
    }
    }

    //sonra bunları istedğin şekilde yazdırabilirsin.
    echo json_encode($all);
  • 12-06-2021, 17:50:21
    #6
    Loopcode adlı üyeden alıntı: mesajı görüntüle
    Hocam şu şekilde yapabilirsin:

    $all=array();
    //for ya da foreach döngüsünde (hangisi uygunsa sana),
    //for diyelim:

    for($i=0;$i<count($tum_kayitlar);$i++){
    if(isset($all[$tum_kayitlar[$i]["id"]])){
    $all[$tum_kayitlar[$i]["id"]]=$tum_kayitlar[$i]["hit"];
    }
    else{
    $all[$tum_kayitlar[$i]["id"]]+=$tum_kayitlar[$i]["hit"];
    }
    }

    //sonra bunları istedğin şekilde yazdırabilirsin.
    echo json_encode($all);
    Döngü ile yapmak sistemi yavaşlatabilir, direk sorgu ile yapılamaz mı?
  • 12-06-2021, 17:51:30
    #7
    Kara adlı üyeden alıntı: mesajı görüntüle
    Anladım hocam anydesk var ise bana atarsanız sisteme bakmak istetim.
    Hocam aslında istediğim mysql sorgusunu yazmak, şayet bunu yazabilirseniz müteşekkir olurum. Uzak masaüstü bağlantısına şimdilik gerek yok.
  • 12-06-2021, 17:53:07
    #8
    Hocam gördüğüm ilk sorun şu ki user_id primary key olmalı ve benzersiz değerlere sahip olmalı öncelikle id bilgileri çakışan satırları düzenleyin. Daha sonrasında DESC komutu ile büyükten küçüğe ya da küçükten büyüğe sıralayabilirsiniz.
  • 12-06-2021, 17:55:21
    #9
    Select user_id,sum(hit) as hits from tabloismi group by user_id order by hits desk
    Bunu bi denermisiniz order by belki hata verir öyle bir durum olursa sıralamayı kaldırıp PHP nin sıralama fonksiyonlarından birini kullanabilirsiniz