Visualizzazione dei risultati da 1 a 6 su 6

Discussione: La funzione RAND()

  1. #1

    La funzione RAND()

    Salve a tutti,

    eccovi la mia martellata contro il muro

    In una tabella ho 4 domande:

    id = 1, id =2 , id=3, id=4

    Ogni qualvolta l'utente risponde ad una domanda, la sua tabella si popola con gli id delle domande

    Voglio fare in modo che la query successiva sputi fuori una domanda (random), ma che non sia già stata utilizzata dall'utente.
    Ecco la query:


    Codice PHP:
    SELECT domande.idrisposteutenti.iddomanda 
    FROM domande
    risposteutenti 
    WHERE domande
    .id<>risposteutenti.iddomanda AND risposteutenti.idutente 113 
    ORDER BY RAND
    () limit 1 
    Invece questa cavolo di query, non tiene conto di domande.id<>risposteutenti.iddomanda e mi sputa fuori in maniera random iddomanda già presente nella tabella risposteutenti

    Sto sbattendo da due giorni.
    Grazie a tutti di cuore.

  2. #2
    SELECT d.id, r.iddomanda
    FROM domande as d LEFT JOIN risposteutenti as r ON d.id=r.iddomanda
    WHERE r.iddomanda IS NULL AND r.idutente = 113
    ORDER BY RAND() limit 1

    ciao

  3. #3
    Grazie mille.
    Però mi restituisce zero record.
    L'utilizzo del LEFT JOIN è comprensibile. Non c'avevo pensato.

    Allego immagine di quello che tira fuori la mia prima query (che a questo punto è chiaramente errata), ma tanto per capire.
    In pratica il risultato è corretto,nel senso che ID (della tab domande) e IDDOMANDA (della tab risposteutenti) non coincidono mai, però nei record successivi compare ID=2, e ID=3 (che sono già stati usati nell'altra tabella.

  4. #4
    immagine allegata
    Immagini allegate Immagini allegate

  5. #5
    In pratica ho notato che se dalla query che mi hai postato:

    SELECT d.id, r.iddomanda
    FROM domande as d LEFT JOIN risposteutenti as r ON d.id=r.iddomanda
    WHERE r.iddomanda IS NULL AND r.idutente = 113
    ORDER BY RAND() limit 1
    tolgo AND r.idutente=113

    mi restituisce le uniche due domande non ancora utilizzate,
    ma io ho bisogno dell'idutente come discriminante, non posso farne a meno

  6. #6
    Credo di aver risolto (è da testare con valori più alti).

    Ecco la query:

    Codice PHP:
    SELECT d.idr.iddomanda
    FROM domande 
    AS d LEFT JOIN risposteutenti as r ON (d.id=r.iddomanda AND r.idutente=113)
    WHERE r.iddomanda IS NULL 
    ORDER BY RAND
    () limit 1 
    in pratica ho spostato AND r.idutente e l'ho messo prima del WHERE.

    Grazie mille bubu77. Recupererò ore di sonno, vado subito a nanna!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.