Avatar billede soeren_dk Nybegynder
24. juni 2005 - 09:30 Der er 15 kommentarer

SQL til valg af tilfældig post

Hej gruppe,
Jeg har en tabel som indeholder en række film. Jeg har forsøgt at skrue en SQL kommando sammen som returnere en enkelt tilfældig (random) post fra denne tabel - kan det lade sig gøre?

Jeg benytter MSSQL som database.

På forhånd tak!
Søren Jensen
Avatar billede the_party_dog Nybegynder
24. juni 2005 - 09:32 #1
Kan du ikke lige give os en idé om hvordan din tabel ser ud? Antal kolonner, og hvilken værdi de kan indeholde? Måske lige skrive hvordan f.eks 3 rækker ser ud?
Avatar billede steent Nybegynder
24. juni 2005 - 09:40 #2
SELECT TOP 1 * FROM [TabelNavn] ORDER BY NEWID
Avatar billede ldanielsen Nybegynder
24. juni 2005 - 10:59 #3
SELECT TOP 1 * FROM [TabelNavn] ORDER BY NEWID()

- der manglede lige en ()
Avatar billede steent Nybegynder
24. juni 2005 - 11:07 #4
Ja hov, det er jo hvad der sker :)
Avatar billede soeren_dk Nybegynder
24. juni 2005 - 15:42 #5
Ja, jeg må indrømme at jeg heller ikke kan se det storre resultat - måske vi får en uddybende forklaring?
Avatar billede steent Nybegynder
24. juni 2005 - 16:57 #6
Du skulle bruge et random recordset fra en tabel.
Du fik en Query der kan gøre det.
Nu skal du bare give point til personen der gav dig svaret.

Se her for mere information: http://www.sqlteam.com/item.asp?ItemID=8747
Avatar billede soeren_dk Nybegynder
24. juni 2005 - 18:30 #7
Pointet går til "the dog".. Men hvad mener du med Random Recordset?
Søren
Avatar billede soeren_dk Nybegynder
24. juni 2005 - 18:32 #8
Hov. Nej sorry. Point the Steent for svaret?
Avatar billede steent Nybegynder
25. juni 2005 - 08:10 #9
post = recordset
Avatar billede the_party_dog Nybegynder
27. juni 2005 - 09:04 #10
Jeg skal da ikke have point for noget jeg ikke har svaret på endnu? Søren hvad gik det hele op i, fik du det du ønskede?
Avatar billede ldanielsen Nybegynder
28. juni 2005 - 13:55 #11
NEWID() er en indbygget funktion der genererer en GUID, dvs en "nøgle" der er meget lang og helt tilfældig. Der ser sådan ud:

173C8C24-3FC0-480A-9336-E1928814076E

Når du bruger ovenstående syntaks genererer MSSQL en GUID for hver række, og sorterer efter den. Da GUID'erne er tilfældige vil det også være tilfældigt hvilken der er top 1.

Kan du ikke få det til at virke?
Avatar billede soeren_dk Nybegynder
28. juni 2005 - 20:44 #12
Hej Dog...
Såmændt bare at alt hvad jeg har lavet tidligee af SQL har altid været at spørge på bestemte kriterier - nu står jeg så i den modsatte båd og vil bare "ha" noget data, da det er en liste over film vises en tilfældig...

Jeg har prøvet denne NEWID på tabellen, men kan ikke umiddelbart få det til at spille. Dog må jeg indrømme at de sidste par dage har været lidt hektiske, så tiden har heller ikke været der.

Når jeg fyrer en SQL af i Query Analyzer, så sker der ikke det store. Jeg får ingen tilfældige rækker...

Med venlig hilsen

Søren Jensen
Avatar billede ldanielsen Nybegynder
29. juni 2005 - 10:16 #13
SELECT TOP 1 * FROM TabelNavn

- skulle gerne give en post fra tabellen, hvis den ikke er tom.


Hvis det virker vil

SELECT TOP 1 * FROM TabelNavn ORDER BY NEWID()

- også virke.

Jeg fatter faktisk ikke hvad problemet er. Får du en fejl? Er du på den rigtige database (skriv evt USE databaseNavn først)?
Avatar billede the_party_dog Nybegynder
29. juni 2005 - 12:19 #14
Hej Søren

Jeg må give ldanielsen ret, har lige testet tingene igennem, og ved mig returerne den tilfældige rækkker.
Avatar billede steent Nybegynder
29. juni 2005 - 12:23 #15
Ja jeg bruger den også flittigt til at vælge 4 forskellige tilbud ud fra en varedatabse, som skal vises på forsiden af mine shops.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester