/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Tilfældige records
Fra : Jens Vestergaard


Dato : 15-11-07 14:45

Hejsa,

Jeg har spurgt om det her før, men jeg kan s.. ikke finde svaret...:

Hvordan udvælger jeg 25 TILFÆLDIGE records fra en Access-tabel med SQL?

Det skal være sådan, at hver gang forespørgslen kører, skal den
resultere i 25 "andre" records - der må gerne være gengangere, men
recordsettet skal være forskelligt og rækkefølgen må også meget gerne
være ny....

Når jeg Googler, får jeg noget i retning af
SELECT TOP 25 * FROM tbl ORDER BY NEWID();
men det giver en fejl, som jeg går ud fra stammer fra NEWID()


--
mvh
Jens Vestergaard
Døgnets jernbanenyheder:
http://www.railsoft.dk/medier.asp

 
 
Jens Vestergaard (15-11-2007)
Kommentar
Fra : Jens Vestergaard


Dato : 15-11-07 16:10

Jeg selv <j@railsoft.dk> skrev den 15 nov 2007 i
news:Xns99E99602DD825jrailsoftdk@62.243.74.163:

> Hvordan udvælger jeg 25 TILFÆLDIGE records fra en Access-tabel med
> SQL?

I mellemtiden er jeg nået frem til dette:

Følgende SQL virker i selve Access

SELECT tblOpgaver.opgID
FROM tblOpgaver
ORDER BY Rnd([opgID]);

- men IKKE på en .asp-side, hvor det egentligt skal bruges!

Nogen forslag?

--
mvh
Jens Vestergaard
Døgnets jernbanenyheder:
http://www.railsoft.dk/medier.asp

Benny Andersen (18-11-2007)
Kommentar
Fra : Benny Andersen


Dato : 18-11-07 00:33

On 15 Nov 2007 15:10:28 GMT, Jens Vestergaard wrote:

> Jeg selv <j@railsoft.dk> skrev den 15 nov 2007 i
> news:Xns99E99602DD825jrailsoftdk@62.243.74.163:
>
>> Hvordan udvælger jeg 25 TILFÆLDIGE records fra en Access-tabel med
>> SQL?
>
> I mellemtiden er jeg nået frem til dette:
>
> Følgende SQL virker i selve Access
>
> SELECT tblOpgaver.opgID
> FROM tblOpgaver
> ORDER BY Rnd([opgID]);
>
> - men IKKE på en .asp-side, hvor det egentligt skal bruges!
>
> Nogen forslag?
Jeg er lidt overrasket over at man overhovedet kan ovenstående.

Jeg kender ikke rigtig begrænsningerne serverside, men kan man:

SELECT tblOpgaver.opgID FROM tblOpgaver where selectingfunction(opgID)=-1

Selectingfunction skal med udgangspunkt i kendskab til antal record i
tblOpgaver, udvælge en tilfældig delmængde af 1..n (n records), og ved de
første n kald, returnere 0 eller -1 afhængig af om opgID tilhører denne
delmændge. Derefter dannes en ny delmænde der anvendes ved de næste n+1 ..
2n kald osv.

eller man kunne udpille fra et recordset - psedokode
with cuurentdb.openrecordset("SELECT tblOpgaver.opgID FROM tblOpgaver")
buildSubSet(.count)
do
.moveto nextchosenInSet
' access to chosen recordset
loop until lastItemInSetIsUsed
end with

--
Mvh
Benny Andersen

Jens Vestergaard (18-11-2007)
Kommentar
Fra : Jens Vestergaard


Dato : 18-11-07 16:38

Benny Andersen <a.mail.user@gmail.com> skrev den 18 nov 2007 i
news:19cpvutgpkpre$.humyzmhqtmiu$.dlg@40tude.net:

> On 15 Nov 2007 15:10:28 GMT, Jens Vestergaard wrote:
>> Følgende SQL virker i selve Access
>>
>> SELECT tblOpgaver.opgID
>> FROM tblOpgaver
>> ORDER BY Rnd([opgID]);
>>
>> - men IKKE på en .asp-side, hvor det egentligt skal bruges!

> Jeg er lidt overrasket over at man overhovedet kan ovenstående.

Ja, det var jeg også! Men jeg er også 100% selvlært...

Det sjove er, at det under *visse* omstændigheder også virker på
web-serveren - nemlig tilsyneladende, hvis der er flere brugere på på én
gang.

Det må have noget at gøre med kaldet til Randomize, men jeg kan ikke
greje den - og min inet-udbyder gider ikke hjælpe (Det betaler jeg
heller ikke for, bevar's...)


> eller man kunne udpille fra et recordset - psedokode
> with cuurentdb.openrecordset("SELECT tblOpgaver.opgID FROM
> tblOpgaver")
> buildSubSet(.count)
> do
> .moveto nextchosenInSet
> ' access to chosen recordset
> loop until lastItemInSetIsUsed
> end with

Ja, jeg har selv været ude i at gennemløbe en Rnd()-funktion og udvælge
enkelt-records på den måde, men den teoretiske risiko er jo en uendelig
løkke.

Jeg kæmper lidt videre med udgangspunktet - men tak for input!

--
mvh
Jens Vestergaard
Døgnets jernbanenyheder:
http://www.railsoft.dk/medier.asp

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste