[Db] query quiz

Marcello Vezzelli marcello a vezz.it
Lun 19 Mar 2007 13:20:24 CET


Ciao a tutti,
ho tre tabelle (e un po' di limiti in sql!)

- domande (id, testo)
- risposte (id, testo)
- utilizzo (id, rif_utente, rif_domanda, rif_risposta,dataora)

In domande ho un elenco di domande... in risposte ho un elenco di 
risposte relative a una certa domanda.
In utilizzo ho le risposte che ha dato l'utente.
Un utente può rispondere più volte alla stessa domanda.

Con questa query conto le domande a cui l'utente ha risposto almeno una 
volta, e verifico quindi se ha risposto a TUTTE le domande almeno una volta:

select count(q.id) from ((select distinct rif_domanda as id from 
utilizzo where rif_utente=123) as q)

Come faccio a ottenere le PRIME RISPOSTE a TUTTE le domande per un certo 
utente?
Mi spiego meglio con un esempio:

domande:
1,'domanda 1'
2,'domanda 2'
...

risposte:
1,'risposta 1 domanda 1'
2,'risposta 2 domanda 1'
3,'risposta 3 domanda 1'
4,'risposta 1 domanda 2'
5,'risposta 2 domanda 2'
...

utilizzo:
1,1,1,2,2007-03-19 10:00:00  // l'utente 1 ha risposto 2 alla domanda 1
1,1,1,3,2007-03-19 10:01:00  // l'utente 1 ha risposto 3 alla domanda 1
1,1,2,4,2007-03-19 10:05:00  // l'utente 1 ha risposto 4 alla domanda 2
1,1,2,5,2007-03-19 10:06:00  // l'utente 1 ha risposto 5 alla domanda 2
...

Voglio ottenere:
1,1,1,2,2007-03-19 10:00:00  // l'utente 1 ha risposto 2 alla domanda 1
1,1,2,4,2007-03-19 10:05:00  // l'utente 1 ha risposto 4 alla domanda 2

Suggerimenti?

Ciao
Marcello







Maggiori informazioni sulla lista Db