webForumDet fria alternativet

Hjälp med slump

ASP

6 svar · 251 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#1

Om någon skulle vilja ge mig ett förslag på hur jag kan modifiera nedanstående sql-sats till att slumpmässigt välja posterna.

Nu väljs de tio översta posterna med sortering efter frågans ID, men jag vill alltså att man ska få upp (i alla fall några) nya frågor varje gång man kör sidan.

Set rsQue = Server.CreateObject("ADODB.RecordSet")

strSplitCat = Split(strCategories,",")
intItems = UBound(strSplitCat) + 1
intTop = CInt(intNrQue / intItems)

sqlQue = ""
For i = 0 To UBound(strSplitCat)
	If i > 0 Then 
		sqlQue = sqlQue & "UNION ALL "
	End If
	sqlQue = sqlQue & "SELECT TOP " & intTop & " * FROM tblQue INNER JOIN tblCat ON (tblQue.CatID = tblCat.CatID) WHERE tblQue.CatID = " & strSplitCat(i) & " AND tblQue.Level = " & intLevel & " ORDER BY tblQue.QID "	
Next

rsQue.Open sqlQue, objConn, 1, 1, 1

PS. Jag betackar mig inlägg som hänvisar mig till att söka på "slump". :)

------------------
// Skarre

Medlem sedan aug. 20012 349 inlägg
#2

frågan diskuterades nyligen

http://cgi.webforum.nu/wf/Forum11/HTML/007668.html

så jag hänvisar till den. :e

Sökte du på "random"? ;)

btw - här finn svaret på frågen
How can I pick random records from a table?, man kan alltid lite på 4guysfromrolla.com :)

------------------
"Utan tvivel är man inte klok"
Tage Danielsson

[Redigerat av mrblonde den 11 dec 2001]

Medlem sedan apr. 20012 427 inlägg
#3

Jag testade nr. 2 på 4guys... men när jag försökte få fram fler än 11 poster fick jag följande meddelande:

Error Type:
Microsoft VBScript runtime (0x800A0009)
Subscript out of range: 'intChoose'

Här är koden, med raden som ger felet i fetstil:

DELIM = ","

Set rsQuestions = objConn.Execute("SELECT QID FROM tblQue")

arrAllKeys = rsQuestions.GetRows ' convert RS to an array!
intRecCount = UBound(arrAllKeys, 2) + 1

Const intChoiceCount = 12 ' or however many you want
strChoices = ""
strKeys = ""
intChosen = 0

Do While intChosen < intChoiceCount
  intChoose = Int(Rnd * intRecCount) + 1
  intTest = "#" & intChoose & "#"
  If InStr(strChoices, intTest) = 0 Then
	  strChoices = strChoices & intTest
	  [b]strKeys = strKeys & DELIM & arrAllKeys(0, intChoose)[/b]
	  intChosen = intChosen + 1
  End If
Loop

strKeys = Mid(strKeys, 2)

sqlQuestions = "SELECT * FROM tblQue WHERE QID IN (" & strKeys & ")"
Set rsQuestions = objConn.Execute(sqlQuestions)

Do Until rsQuestions.EOF
	Response.Write rsQuestions("QID") & "<br>"
	rsQuestions.MoveNext
Loop

------------------
// Skarre

[Redigerat av Skarre den 11 dec 2001]

Medlem sedan aug. 20011 087 inlägg
#4

Jo d e sant d diskuterades nyligen men om jag inte minns helt fel fick han som öppnat tråden alldrig något vettigt svar :e

------------------
*brölar ljudligt*

Medlem sedan mars 20002 836 inlägg
#5

Nä, för att många av oss ger ett "generellt" svar så att frågeställaren kan "labba" lite och förhoppningsvis lära sig något på kuppen oxå.
Med de uppgifterna som fanns/finns här på forumet så skulle man kunna koda fram något, ok att det inte funkar vid första försöket, komma tillbaka med frågor om varför det inte funka och sedan få ett svar.

Allt kan inte serveras på ett silver fat ...

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan mars 20002 836 inlägg
#6

kika in här .... finns en lösning hur man slumpar från databas: http://cgi.webforum.nu/wf/Forum11/HTML/007668-2.html#32

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan apr. 20012 427 inlägg
#7

Jag var mer ute efter en enkel lösning som inte skulle innebära en total omskrivning av min existerande kod (vilket alla lösningar som föreslagits gjort hittills). Jag har hört någonstans att det fanns någonting inbyggt i Jet SQL i stil med "ORDER BY RAND" eller liknande, men jag hade tydligen fel. Jag har varken tid (projektet ska visas upp på fredag) eller ork att skriva om hela koden för så jag struntar nog i det. :)

------------------
// Skarre

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)