Hallo,

Ik ben momenteel bezig met het maken van een klein wedstrijd systeempje.
Een gebruiker kan inloggen en dan krijgt hij per dag 5 vragen + 1 schriftingsvraag. Er worden enkel vragen getoond die hij nog nooit heeft gehad, idd met de schiftingsvragen en je kunt maar 1 keer een reeks van 5 vragen + 1 schiftingsvraag per dag oplossen. De vragen (id's) die al getoond zijn, worden met een user id in een apparte tabel gestopt.

Hoe kan ik nu het snelst controleren voor in men mysql query dat hij enkel 5 random vragen mag nemen zonder dat er ééntje in zit die DIE bepaalde gebruiker al heeft gehad? Dus bv. de vragentabel bevat 120 vragen, de andere tabel zegt dat gebruiker a al 60 vragen heeft gehad. Dus het script kiest 5 willekeurige vragen voor die gebruiker, en neemt er geen enkel van die 60 die hij al heeft gehad.

Thx voor de hulp

Deze query haalt 5 willerkeurige vragen uit de ene tabel

mysql_query('SELECT * FROM vragen WHERE ORDER BY RAND() LIMIT ' . $aantal_vragen);
Stel je hebt de tabel 'vragen' waarin de vragen staan en de tabel 'antwoorden' waarin je het antwoord in combinatie met een user_id en vraag_id opslaat:

SELECT
    vraag
FROM
    vragen
WHERE
    vraag_id NOT IN (
        SELECT vraag_id
        FROM antwoorden
        WHERE user_id = 1
        )
ORDER BY RAND()
LIMIT 5
Wow, ik heb dit nog niet getest: maar mijn verbazing dat je dus een sql instructie gebruikt in een sql instructie.

Zo heb ik iets ergs interessant bijgeleerd :D
Ja werkt prima, bedankt voor de hulp, ik heb ondertussen bijgeleerd dat je een sql in een sql kunt gebruiken, en vooral de NOT IN functie is erg handig.

Nog eens bedankt.

Reageren