Topic: 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

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

select * from soal where id_soal not in (select id_soal from hasil_ujian where id_user='ID_USER')

silahkan modifikasi sendiri
intinya kita menselect id_soal yang tidak ada di table hasil_ujian

semoga membantu
terima kasih

http://icare.jagoanhosting.com/banners/footer-jagoan-hosting-indonesia.gif << web hosting surabaya, mo bikin web murah n kalo ada apa-apa bisa langsung disamperin big_smile
Guling-guling ... http://www.mysmiley.net/imgs/smile/happy/happy0071.gif hihihihi jadi pusing

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

ok thanx mas adel..

trus kalo select soalnya random dan dibatasi hanya 10 soal, gmn mas ya???

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   |   
|     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_soaluji from table_dibawah_ini where id_user='ID_USER')
+---------+-----------+
| id_user | id_soaluji |
+---------+-----------+
|    02     |    s03      |   => id_soaluji adalah id soal2 yang pernah diujikan seperti pd tbl hasil_ujian
|    02     |    s02      |   
|    02     |    s06      |
|    02     |    s01      |
|    02     |    s09      |
|    02     |    s05      |
|    02     |    s04      |
|    02     |    s08      |
|    02     |    s10      |
|    02     |    s13      |
+---------+----------+

thanx bozzz

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

knp model penyimpanannya bgt
harusnya ada relasi hal itu untuk normalisasi
jika modelnya bgt maka kan makan waktu lama
jika model table nya bgn:
table soal_uajian
============
|  id_soal  |  soal  |
+-------------------+
|  001      | soal 1 |
+-------------------+
|  002      | soal 2 |
+-------------------+
|  003      | soal 3 |
+-------------------+
|  004      | soal 4 |
+-------------------+

table hasil_ujian
=====================
|  id_ujian | id_user |      tgl      |
--------------------------------------
|  U001     | S001    | 24/11/08  |
--------------------------------------
|  U002     | S003    | 24/11/08  |
--------------------------------------

table detail_hasil_ujian
================================
| id_detail_uajian |  id_ujian | id_soal | jawaban  |
---------------------------------------------------------
| DU001              | U001      | 002      |   A          |
---------------------------------------------------------
| DU002              | U001      | 001      |   C          |
---------------------------------------------------------
| DU003              | U001      | 003      |   D          |
---------------------------------------------------------
| DU004              | U002      | 002      |   A          |
---------------------------------------------------------
| DU005              | U002      | 001      |   B          |
---------------------------------------------------------

nah dengan begini misal kita mo merandom lagi
jadi mudah, misal kita mau menselect yang tidak pernah dikerjakan oleh user S001

select a.* from soal_ujian a where a.id_soal not in (
select id_soal from detail_hasil_ujian x
inner join hasil_uajian y on x.id_ujian = y.id_ujian
where user_id = 'S001'
)

semoga membantu
terima kasih

http://icare.jagoanhosting.com/banners/footer-jagoan-hosting-indonesia.gif << web hosting surabaya, mo bikin web murah n kalo ada apa-apa bisa langsung disamperin big_smile
Guling-guling ... http://www.mysmiley.net/imgs/smile/happy/happy0071.gif hihihihi jadi pusing

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

thanx bos-bos...

uda kelar smua...tapi misal da keluhan lagi, mohon bimbingnnya ya....

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

iya
senang bisa membantu

terima kasih

http://icare.jagoanhosting.com/banners/footer-jagoan-hosting-indonesia.gif << web hosting surabaya, mo bikin web murah n kalo ada apa-apa bisa langsung disamperin big_smile
Guling-guling ... http://www.mysmiley.net/imgs/smile/happy/happy0071.gif hihihihi jadi pusing