Quote Originariamente inviata da sally3000 Visualizza il messaggio
ovviamente mi riferisco alla procedura in mysql, in php saprei realizzarla ma mi interesserebbe capire come fare tutto questo con una semplice query o procedure
Ho dei dubbi,
Tu sei in multiutenza e con la procedura che ho abbozzato
dovresti modificare dei valori in tabella,
ma per chiamate contemporanee potresti avere delle rogne
perche tutti andrebbero a leggere e modificare gli stessi campi

poi la procedura in MySql io non sono capace a farla,
la ho abbozzata in VBA solo per buttare li una ipotesi



Aggiungiamo alla nostra tabella 2 campi:
Nnn numerico che è il contatore delle "uscite"
Fff Testo che è una specie di Flag che identifica i tuoi 10 record estratti
Idx chiaramente è la sua Key numerica


La procedura MySql potrebbe essere composta da 2 query

1°)
Reimposta a Vuoto i 10 record che erano stati identificati nella estrazione precedente
........ Execute ("UPDATE T1 Set T1.Fff = '' WHERE LunghezzaStringa(T1.Fff)>0;")


2°)
Immagina di estrarre i primi 10 record ordinati per Nnn e per Random
SELECT TOP 10 T1.Nnn, T1.Fff FROM T1 ORDER BY T1.Nnn, Rnd([T1.Idx])
quelli sono i tuoi record pescati e innanzitutto gli fai un UPDATE
per incrementare di 1 il campo Nnn
e per mettere un Flag nel campo Fff
quindi:
.... dbex.Execute ("UPDATE
(
SELECT TOP 10 T1.Nnn, T1.Fff FROM T1 ORDER BY T1.Nnn, Rnd([T1.Idx])) AS V1
SET V1.Nnn = (If IsNull(V1.Nnn) Then 1 Else V1.Nnn End)+1, V1.Fff = 'x';")



3°)
Adesso con php puoi estrarre i tuoi 10 record che contrassegnati con la "x"
SELECT Campo1, Campo2, CampoEccetera FROM T1 WHERE T1.Fff = 'x';


Ti ripeto prendila solo come idea poi la devi adattare al tuo contesto

.