Newsgroup: it.lavoro.professioni.webmaster
Titolo: aiuto su select sql

Vorrei sapere se è possibile estrarre dei valori a caso da una select.
ad esempio:
io ho 10 mila record
faccio una select con condizioni su questi record e vorri che mi prendesse
un record a caso tra quelli usciti, diverso ogni volta che rilancio la
select.
ho provato fin ora a selezionare un id random da 1 a 10 mila e prendere il
record con id > all' id random , ma in questo modo capita che a volte l'id
random è maggiore dell'ultimo id valido con conseguente nessun record
trovato.
avete qualche consiglio da darmi?
saluti
Luca

Luca, che db usi ? ci sono alcune differenze sui dialetti
inoltre il range di valori da dove lo pigli (cioč xchč da 1 a 10000) se
l'id nel db non ha buchi allora puoi creare un range dal min(id) al max(id)
poi fare il tuo random ecc.

 ha scritto nel messaggio
news:y8WY8.46933$7N3.1...@twister2.libero.it...


Luca ha scritto:

dipende dal tipo di DB che utilizzi.
cmq prova a vedere qui
http://www.webngo.net/aspstuff/articoli/recordrandom.asp
ciao
-- 
Kappa [co-mod ICWA]
ka...@webngo.net
www.webngo.net
www.filmscoop.it

select.
dipende da molte cose.  com'è fatta la tabella?

ok vi spiego bene il problema:
innanzitutto database
ms sql server:
io faccio una select (in una store procedure)
tra varie tabelle
vi metto la select anche se č abbatsanza complessa:
select 
d.id
 ,b1.banner from dati d,totali t,banner b1 where  
d.id
 <> @id and
b1.id
=
d.id
 and 
d.id
=
t.id
  and t.crediti > 0 and 
d.id
 in (select 
b.id
 from
banner b where b.attivato=1) and 
d.id
 in (select 
d2.id
 from dati d2 where
d2.idcat in  (select c.idcat from categorieacc c where id=@id)) and  
d.id
 in
(select 
c2.id
 from categorieesp c2 where c2.idcat = (select idcat from dati
where id= @id ))   group by 
d.id
,b1.banner
la select funziona egregiamente.
il problema che gli id risultanti non sono tutti contigui.
io avrei la necessitą di prelevarne uno a caso diverso ogni volta.
ho provato a tirare un numero random tra 0 e il max  e aggiungere la
clausola id> idrandom
ma in questo modo capita che spesso vengano presi gli ultimi id metre i
primi vengono slezionati sensibilmente meno.
Io vorrei far si che ogni record estratto abbia la stessa possibilitą degli
altri.
Sapete aiutarmi?
Ciao
Luca

mezzo e dopo non ho più record contigui.
allora usa il random per fare un select top.  magari prima fai un
recordcount per vedere quanti ne hai.
già che ci siamo, che linguaggio di scripting usi?

 già che ci siamo, che linguaggio di scripting usi?
uso asp , ma tanto non conta perchè la selecet è all'interno di una
storeprocedure
ho risolto in questo modo:
grazie alla funzione newid() che restituisce un record casuale tra quelli
selezionati :))) per una volta w m$
Ah se qualcuno di voi ha mai usato quella funzione mi dite se i risultati
sono veramente random ?
Saluti
Luca


Se a priori conosci il numero dei record, crea una variabile con un valore
random (attenzione a non andare oltre il numero dei record) e inserisci alla
fine della query:
LIMIT 'valore_random_generato',1
non l'ho provato ma potrebbe funzionare :)
Ciao
Giuseppe

 ha scritto nel messaggio
news:ozVY8.72795$Jj7.1...@news1.tin.it...


 Io vorrei far si che ogni record estratto abbia la stessa possibilità



Per quanto riguarda l'albo stò per laurearmi in ingegneria informatica e
quindi non ho nessun problema prendere il suddetto (per me inutile) albo
E spiegami come fai a capire che il disegno del db è sbagliato da una
select....
Mah.......