• 02-02-2013, 22:24:52
    #1
    Merhabalar bir sıkıntım var.
    Paylaştığım yazıları en çok okunana göre rastgele çekmek istiyorum. Slider'de kullanıcam.

    Elimdeki sorgu

    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY okunma rand() LIMIT 5 ");
    // Böyle yaptığımda olmuyor..
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY rand() okunma LIMIT 5 ");
    // Böyle yaptığımda da olmuyor..
    Çözüm önerileriniz nelerdir ?
  • 02-02-2013, 22:32:27
    #2
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY hit DESC LIMIT 5 ");
  • 02-02-2013, 22:38:32
    #3
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY rand() LIMIT 5"); böyle olacak
  • 02-02-2013, 22:56:30
    #4
    samsunikinciel adlı üyeden alıntı: mesajı görüntüle
    Merhabalar bir sıkıntım var.
    Paylaştığım yazıları en çok okunana göre rastgele çekmek istiyorum. Slider'de kullanıcam.

    Elimdeki sorgu

    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY okunma rand() LIMIT 5 ");
    // Böyle yaptığımda olmuyor..
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY rand() okunma LIMIT 5 ");
    // Böyle yaptığımda da olmuyor..
    Çözüm önerileriniz nelerdir ?
    //Olması gereken sorgu ama bunu kullanma
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY okunma DESC, rand() LIMIT 5 ");
    
    //mysql kayıt sayınız 1000 üzeri ise rand() kullanmayın
    $benzer = mysql_query("SELECT * FROM posts ORDER BY okunma DESC LIMIT 5 ");
    $i=0;
    while($k = mysql_fetch_array($benzer)){
    $kayit[$i] = $k;
    $i++
    }
    shuffle($kayit);
    print_r($kayit);
  • 02-02-2013, 22:59:23
    #5
    webgezgini10 adlı üyeden alıntı: mesajı görüntüle
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY hit DESC LIMIT 5 ");
    Benim listelemede bi sıkıntım yok. Okunma sayısı yüksek olanları rastgele listelicem.
    miscel adlı üyeden alıntı: mesajı görüntüle
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY rand() LIMIT 5"); böyle olacak
    Bu sorguyla rastgele haber çekilir. Benim amacım okunma sayısına göre çekmek idi.
    digiklan adlı üyeden alıntı: mesajı görüntüle
    //mysql kayıt sayınız 1000 üzeri ise rand() kullanmayın
    $benzer = mysql_query("SELECT * FROM posts ORDER BY okunma DESC LIMIT 5 ");
    $i=0;
    while($k = mysql_fetch_array($benzer)){
    $kayit[$i] = $k;
    $i++
    }
    shuffle($kayit);
    print_r($kayit);
    Hocam denemedim ama sorunumu böyle çözdüm. İlerde bu konuya olurda Google'den gelirlerse yararımız olsun

    SQL SORGUM

    SELECT * FROM (SELECT * FROM posts WHERE okunma !=0 ORDER BY rand() LIMIT 5) posts ORDER BY okunma DESC
  • 02-02-2013, 23:00:15
    #6
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY okunma DESC, RAND() LIMIT 5 ");
    Olarak da çalışması lazım.
    Seninkinde en çok okunan 5 kaydı değil, 0 den çok okunan tüm kayıtlar içinden rastgele 5 çeker.
    Tekrar ediyorum yukarıda php ile örnek verdim. Rand 1000 üzerinde kayıt olduğunda yanıt süresini ve işlemci kullanımı çok arttırır.
  • 02-02-2013, 23:04:26
    #7
    digiklan adlı üyeden alıntı: mesajı görüntüle
    Olarak da çalışması lazım.
    Seninkinde en çok okunan 5 kaydı değil, 0 den çok okunan tüm kayıtlar içinden rastgele 5 çeker.
    Tekrar ediyorum yukarıda php ile örnek verdim. Rand 1000 üzerinde kayıt olduğunda yanıt süresini ve işlemci kullanımı çok arttırır.
    Okunma sayısı 0'a eşit olmayan en çok okunan 5 kayıtı listelettim.

    SELECT * FROM posts ORDER BY okunma DESC, RAND() LIMIT 5

    bu sorgu da çalışıyormuş. Elinize sağlık anladım demek istediğinizi.

    Bu sorgu çok yorar sanırım ..

    SELECT * FROM (SELECT * FROM posts WHERE okunma !=0 ORDER BY rand() LIMIT 5) posts ORDER BY okunma DESC
  • 02-02-2013, 23:06:12
    #8
    $query = mysql_query("SELECT * FROM (SELECT * from posts ORDER BY okunma DESC LIMIT 5) ORDER BY rand()");
    Doğruluğu hakkında emin değilim ama bu tarz birşey olması gerekir.
  • 02-02-2013, 23:10:18
    #9
    digiklan adlı üyeden alıntı: mesajı görüntüle
    $benzer1 = mysql_query("SELECT * FROM posts ORDER BY okunma DESC, RAND() LIMIT 5 ");
    Olarak da çalışması lazım.
    Seninkinde en çok okunan 5 kaydı değil, 0 den çok okunan tüm kayıtlar içinden rastgele 5 çeker.
    Tekrar ediyorum yukarıda php ile örnek verdim. Rand 1000 üzerinde kayıt olduğunda yanıt süresini ve işlemci kullanımı çok arttırır.
    wdr.leo adlı üyeden alıntı: mesajı görüntüle
    $query = mysql_query("SELECT * FROM (SELECT * from posts ORDER BY okunma DESC LIMIT 5) ORDER BY rand()");
    Doğruluğu hakkında emin değilim ama bu tarz birşey olması gerekir.
    Verdiğiniz sorgunun tam zıttı yani
    $query = mysql_query("SELECT * FROM (SELECT * from posts ORDER BY okunma DESC LIMIT 5) ORDER BY rand()");
    bu değilde
    bu olucak.
    SELECT * FROM (SELECT * FROM posts WHERE okunma !=0 ORDER BY rand() LIMIT 5) posts ORDER BY okunma DESC
    Teşekkür ederim herkese.