Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28

Discussione: SQL random

  1. #1

    SQL random

    Ciao,

    ho bisogno di un aiuto e un consiglio...

    Ho un DB di 300 record (numerati dall'ID).
    Voglio fare una query random (e fin qui ok).

    Però voglio che:

    1) Prima query => pesca il record con ID 20
    2) Alla seconda query => pesca un altro ID random MA NON DEVE SUCCEDERE CHE ESCA IL 20

    Ovvero... una funzione random che ricordi i precedenti estratti e non li faccia riuscire (ma senza cancellare il record dal DB)

    Chi ha qualche idea su come fare?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  2. #2
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    sql=select * from tuodb where id=20"

    sql=select * from tuodb where id<>20"

  3. #3

    Rixx...

    ma che dici?

    Le sql sono random io non so quale numero verrà estratto (il 20, il 30 ecc..)

    mi serve una funzione che generi una query casuale scegliendo (all'inizio) tra 300 record. Ma che alla seconda quesry ne pescchi uno a casa (ma sono 299) e così via fino alla 299esima query dove è rimasto solo 1 numero da pescare....

    Diciamola in altro modo:

    Come se io dicessi all'ASP:

    Domanda: Scrivimi un numero a caso tra questi (1,2,3,4,5,6,7,8,9,0) (dieci numeri)

    Risposta: 5

    Domanda: Scrivimi un numero a caso tra questi (1,2,3,4,6,7,8,9,0) notare che manca il 5 perchè già estratto

    Risposta: 2

    Domanda: Scrivimi un numero a caso tra questi (1,3,4,6,7,8,9,0)

    Risposta: 3

    Domanda: Scrivimi un numero a caso tra questi (1,4,6,7,8,9,0)

    Risposta: 6

    Domanda: Scrivimi un numero a caso tra questi (1,4,7,8,9,0)
    ......
    ......
    .....

    Domanda: Scrivimi un numero a caso tra questi (1)

    Risposta: 1

    Domanda: Scrivimi un numero a caso tra questi ()

    Risposta: Basta scemo, sono finiti!!!!!

    Chiaro?
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  4. #4
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    1) Prima query => pesca il record con ID 20
    2) Alla seconda query => pesca un altro ID random MA NON DEVE SUCCEDERE CHE ESCA IL 20

    lo hai scritto tu :master:

    tu vuoi una funzione random?

    ecco qua:

    http://www.aspcode.it/tips/tips.asp?...how_tip&idx=55

    se poi vuoi fare la seconda sql in base alla prima senza contare dei record ti memorizzi il risultato random trovato tipo:

    randomextracted=rs("id")

    e poi fai la seconda sql sempre con il metodo random di cui sopra e aggiungi

    and where id<> & randomextracted

    alla tua sql


  5. #5

    Rixx tu dici...

    ... di fare un RND per generare un ID casuale. (A)

    memorizzo il risultato in una variabile (B)
    faccio la query where ID=(A)

    poi seconda richiesta:

    un RND per generare un ID casuale. (D <> B)*
    memorizzo il risultato in una variabile (E)
    faccio la query where ID=(D)

    e così via...

    * Appunto... COME SI FA A FARE un RND con D <> B
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  6. #6

    Nessuno mi da un'idea?

    E' un semplicissimo "RANDOM NUMBERS NON REPEATING"
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  7. #7

    Continuo il mio semi monologo...

    Ho ideato una cosa ma (c'è sempre un ma)...

    codice:
    Dim Rank(10)
    
    'Genera un numero random 0 a 299 (300 sono i recordset del DB)
    
    Randomize()
    min_val = 0
    max_val = 299
    all_vals = max_val - min_val + 1 
    numero = CInt(all_vals*Rnd() + min_val) 
    
    'Fai una SQL sul DB dove estratto=False (false=non estratto)
    
    sql="select * from tab Where estratto=False"
    Set rs=OBJdbConnection.Execute(sql)
    
    for i = 0 to 299 
    'creo un Array e assegno a ogni array (da 0 a 299) un recordset
    rank(i)=rs("ID")
    rs.movenext
    Next
    
    ' Prendi RS al quale ho assegnato il numero random
    
    response.write (rank(numero) & " " & numero & "
    ")
    
    'segno il recordset come estratto=True
    OBJdbConnection.Execute "UPDATE tab_midi SET estratto=True WHERE ID="& rank(numero)
    Bhè funziona... il MA sta nel fatto:

    Ma 300 variabili (l'array) non mi faranno skiattare il server? E se sono + utenti in contemporanea sono 300+300+300... variabili....
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  8. #8
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    eccomi scusa dove fare una cosa cmq non ti preoccupare non schiatta il server, se però gli utenti dovessero fare questa cosa 1 sola volta per connessione, puoi creare un numero random dal loro ip il che forse in quel caso sarebbe meglio

    Rixx

  9. #9

    Grazie per la fiducia

    Rixx....

    Aspetto qualche tempo prima di mettere questo codice, magari qualcuno si fa venire un'idea migliore....

    Su esperti del forum... fatevi sentire!!!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  10. #10
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    ..per me!!

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.