Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

query random record untuk nampilin record yang berbeda, da yg tau???

slm kenal mas-mas mbak-mbak senior...

tolongin aq ya, aq kbingungan bikin query untuk nampilin record yang udah pernah ditampilkan.
misal da 3 tabel, tabel 1 nyimpen detail soal (kolomnya: id_soal, soal, jawaban), tabel 2 detail user (kolomnya: id_user; nama) dan tabel 3 detail hasil test (kolomnya: id_ujian, id_user, id_semuasoal) -> id_semuasoal ini nyimpen semua id soal yang telah dikerjakan, misal 1 kali test mengerjakan 10 soal, berarti di kolom itu tersimpan 10 id_soal (misal: a1;a4;a2;a12;.....;a31 -> data tersebut random dan tdk terulang).

Yang mau saya tanyakan misal user ingin ikut test lagi maka soal yang sudah dia kerjakan tidak keluar lagi dalam test, itu querynya gimana ya?????....

Mohon bantuannya, Thanx b4

Comments

  • Biasanya sih order by rand() limit 10

    Kemudian id soal yg sudah di kerjakan td masukin ke tabel lain. Jadi untuk ujian barus select lg id soal yg tdk ada di tabel tsb. Pakai where id not in()
  • Tabelnya jangan seperti itu. Tabelnya seperti ini

    id_soal,id_user
    1|1
    2|1
    3|1
    10|2
    11|2
    12|2

    Nah bearti user 2 sudah mengerjakan soal dengan id 10,11,12
    Jadi tinggal misalkan user 3 mau mengerjakan ... where id not in(...) order by rand() limit 10

    Bukan seperti ini menyimpannya

    s03-s02-s06-s01-s09
  • ok thanx mas goku..

    contoh kuerinya ky gini mas ya..tolong dikoreksi
    select * from soal where id_soal not in (select id_soal from hasil_ujian where id_user='ID_USER') order by rand() limit 10

    trus masalahnya kolom id_semuasoal pada tabel hasil_ujian ini isinya semua id_soal yang telah dikerjasan pada 1 sesi
    misal isinya :
    +
    +
    | id_ujian | id_user | id_semuasoal |
    +
    +
    | 01 | 02 | s03-s02-s06-s01-s09 | => sxx adalah id soal dipisah dgn tanda [-]
    | 02 | 01 | s01-s08-s10-s02-s06 | => sxx adalah id soal yang sudah dikerjakan jd tidak boleh keluar dlm ujian lg
    | 03 | 02 | s05-s04-s08-s10-s13 |
    +
    +
    +
    +

    => soal user 02 boleh ada yg sama dgn soal user 01, tp soal user 02 tdk boleh sama dgn soal yg sudah dikerjakan user 02 sebelumnya, seperti tabel diatas..
    klo seperti itu gm querinya ya??? tolong bantu..

    Ato gmn carae mengubah kolom jd tabel, agar bisa select seperti
    select * from soal where id_soal not in (select id_soal from hasil_ujian where id_user='ID_USER') order by rand() limit 10
    +
    +
    +
    | id_user | id_soaluji | => id_soaluji adalah id soal2 yang pernah diujikan, diambil dr tbl hasil_ujian
    +
    +
    +
    | 02 | s03 |
    | 02 | s02 |
    | 02 | s06 |
    | 02 | s01 |
    | 02 | s09 |
    | 02 | s05 |
    | 02 | s04 |
    | 02 | s08 |
    | 02 | s10 |
    | 02 | s13 |
    +
    +
    +

    thanx mazzz goku..
  • buat status jika sdh dijawab status=1, yang belum =0
    yang ditampilkan yang masih status 0
  • @^ Nggk bisa berlaku global

    Misalkan budi mengerjakan soal 1,4,7 lalu diset jawab=1
    Lalu ari soal 5,8,10 lalu diset jawab =1

    Lalu si budi ingin ikut lagi kemudian login lagi nggk bisa ngerjain soal 5,8,10 lagi. Padahal soal 5,8,10 belum dikerjakan sama budi
    Yang mau saya tanyakan misal user ingin ikut test lagi maka soal yang sudah dia kerjakan tidak keluar lagi dalam test, itu querynya gimana ya?????....
  • mas goku benar.....

    mksud aku kan user disini bisa ikut test berkali-kali, tapi soal yang uda dikerjakan tidak keluar lg.
    tapi untuk user yang belum mengerjakan soal tersebut, soal tersebut tetep keluar
    kalo diset 0 ntar user lain g bs ujian soal yang sama duonk....

    solusinya gmn mas????
    thanx boz..

    trus rand() tu g diset rand(no_awal,no_akhir) ta mas..
  • Ya buat lagi 1 tabel untuk menyimpan histori soal yang pernah dikerjakan user. Jadi tinggal

    select ... from soal where id not in(select id_soal from tb_history where id_user='4') order by rand() limit 10

    Mis budi id_user=4

    Struktur tabel sudah saya berikan diatas.
  • thanx bang masalah tadi udah kelar...

    aku pake kueri ni

    "select distinct s.id, s.isi, p.penulis from soal s, tbl_penulis p WHERE s.id not in (SELECT suu.id_soal from soal_udah_ujian suu where suu.id_user='ID_USER') and s.penulis=p.id_penulis order by rand() limit 10"

    bang goku da masalah lg nich...

    aku kan mo nampilin soal random yang tak berulang.
    n sekarang gimana kalo soal yang keluar itu sesuai urutan.
    bener keluar random tapi berurutan (dari id_soal kecil ke id_soal besar) coz disesuaikan dengan level soal.

    thanx bang...
  • coba:

    SELECT DISTINCT s.id, s.isi, p.penulis
    FROM soal s, tbl_penulis p WHERE
    s.id NOT IN (SELECT suu.id_soal
    FROM soal_udah_ujian suu WHERE
    suu.id_user='ID_USER') AND
    s.penulis=p.id_penulis AND
    s.id >= (SELECT FLOOR( MAX(id) * RAND()) FROM soal )
    ORDER BY s.id LIMIT 10;

    good luck ;)
  • Ya nggk bisa. Namanya juga order by rand(). Acak dan pasti tdk berurut.
  • query yg saya post sebenarnya udah bisa sort asc kalo gak salah field nya.

    tapi kalo mo pake php, di manual ada:
    http://id2.php.net/sort

    tapi lebih cepet langsung di querynya. CMIIW
  • Sudah dicoba query dari newuser? Atau coba order by rand(), id
    Belum pernah nyoba sih. Di tes dulu.
  • ok bang...thanx

    misal di manipulasi pada skrip PHP-nya gmn bang???
    misal hasil random yg keluar => 2, 6, 4, 18, 7
    tapi diurutkan jadi => 2, 4, 6, 7, 18
    jadi tetap keluar random tapi berurutan sesuai level soal.

    maap bang masih pemula jd banyak tanya, thanx 4 all
  • thanx bos-bos smua...

    ni uda kelar...aku kombinasikan sama phpnya.
    tapi misal ntar da keluhan lagi, mohon bimbingnnya ya....
Sign In or Register to comment.