- Home
- Categorie
- Coding e Sistemistica
- Coding
- PHP MySQL voti comparativi univoci
-
PHP MySQL voti comparativi univoci
Spero di aver capito... vediamo.
Tabellautenti: ID|Name 1|Gino 2|Pino TabellaElementi: ID|Elemento 1|Primo 2|Secondo 3|Terzo 4|Quarto 5|Quinto 6|Sesto TabellaArchivio ID|IDUtente|Selezione|NonSelezione 1|2|3|5 2|2|1|4
Nell'esempio ho registrato due risposte di "Pino" ed in particolare tra "Terzo" e "Quinto" ha scelto "Terzo", mentre tra "Primo" e "Quarto" ha scelto "Primo".
Se ho compreso giusto al terzo quesito il sistema dovrà proporre solo "Secondo" e "Sesto".Quindi, registro nelle risposte sia la scelta che l'opzione scartata e quando devo proporre una domanda nuova selezionerò in maniera casuale due opzioni escludendo le opzioni in qui ho l'utente selezionato e le risposte già presenti
select id, elemento from TabellaElementi WHERE id NOT IN (SELECT Selezione FROM TabellaArchivio where idUtente = " & idUtente & ") and id NOT IN (SELECT NonSelezione FROM TabellaArchivio where idUtente = " & idUtente & ") order by rand() limit 0,2
Esistono poi alternative... magari leggiti questo articolo che esegue dei test su differenti query per valutare le performance
https://www.red-gate.com/hub/product-learning/sql-prompt/consider-using-not-exists-instead-not-subquery
-
Ah, ok, non devi escludere la domanda se è già stata fatta ma solo l'abbinamento...
Pensando così al volo:
- Fatti una tabella con i possibili abbinamenti
- Registri l'abbinamento con l'utente
Fine della storia
-
Select "abbinamento" from abbinamenti dove non esiste abbinamento ed utente in risposte....
non devi fare cicli