Menampilkan Data secara Acak

Untuk menampilkan data secara acak cara yang bisa digunakan adalah sebagai berikut:
1. Mengambil jumlah baris
SELECT COUNT( *) FROM `nama_tabel`
2. Membuat angka acak dari 0 hingga jumlah data dikurangi 1
Dengan fungsi php rand()
3. Mengambil data tertentu dengan MySql
SELECT * FROM `nama_tabel` LIMIT angka_acak, 1

Mungkin ada cara lain yang lebih efektif?

9 Comments

  1. Bisa juga dengan
    SELECT * FROM nama_tabel ORDER BY RAND() LIMIT 1
    jika jumlah record dalam tabel tak terlalu besar.

  2. anghuda says:

    Dalam manual MySQL disebutkan :
    RAND() is not meant to be a perfect random generator, but instead a
    fast way to generate ad hoc random numbers that will be portable between
    platforms for the same MySQL version.

    Jadi, ada cara lain … yg lebih baik.

  3. anghuda says:

    Cara yang digunakan Sutan, dan sintaks ORDER BY RAND() memang cukup populer, tetapi ada negatifnya, yakni jika record cukup besar, misalkan 10000 lebih … karena SQL harus mendapatkan angka random dari 10000 lebih record,

    kalau recordnya besar, maka cara yang ditawarkan oleh gecko penulis artikel ini adalah lebih baik … yakni dengan mencari bilangan random melalui PHP … atau programming di luar SQL.

  4. anghuda says:

    Namun cara gecko musti melibatkan pihak ketiga …

    saya mikir, gimana caranya supaya tetap di SQL tetapi lebih baik dari ORDER BY RAND …

    jawabannya adalah di Google, yakni dengan statemen berikut :

    SELECT *
    FROM nama_table AS r1 JOIN
    (SELECT ROUND(RAND() *
    (SELECT COUNT(ID)
    FROM nama_table)) AS ID)
    AS r2
    WHERE r1.ID >= r2.ID
    ORDER BY r1.ID ASC
    LIMIT 1;

    Meski SQLnya nampak lebih rumit, tetapi jauh lebih kenceng daripadanya ORDER BY RAND.

    Artikel komplitnya bisa disimak di:
    http://jan.kneschke.de/projects/mysql/order-by-rand/

  5. Komentar kang huda kalau digabung sudah bisa jadi artikel sendiri :)
    Nah, seperti komentar pertama saya, jika yang dimaksud hanyalah untuk tugas sederhana seperti menampilkan kutipan secara random dari (misalkan) 50 data, tentu cara yang saya kemukakan di atas sangat mudah dan menarik hati :)

  6. Bojog says:

    ada tutorialnya yang lebih detail nggak, kalau melihat artikel diatas malah jadi bingung. berikan comtoh implementasinya biar para newbie lebih mudah mnegerti. kalau artikel seperti di atas hanya cocok untuk yang sudah tau dan mengerti php dan mysql saja.

  7. Bojog says:

    sperti ini misalnya :
    contoh untuk random data
    [code]
    // get the highest 2 ids
    $res1 = mysql_query("SELECT id FROM table ORDER BY id DESC LIMIT 2");
    // generate random no between 0 and second highest id
    $top = mysql_result($res1,1);
    $rand = rand(0,$top);
    // now query for id greater then random no
    $sql = "SELECT * FROM table WHERE id>$rand ORDER BY id DESC LIMIT 1"
    [/code]

  8. tari says:

    tolong jelasin ulang gimana random data pakai php plizzz….. soalnya kurang jelas

  9. Berikan contoh penggunaan rand di php dong biar lebih ngerti.
    Dari :http://www.sampara.com

Leave a Reply