webForumDet fria alternativet

Hjälp med random och sql.

Databaser & SQLur Databashanterare & SQL

6 svar · 539 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#1

har följande sql fråga

MySQL = "Select * from produkter where id <> '" & storsaljare & "' Order by rand() DESC LIMIT 1"
set RS = connect.Execute(MySQL)

Nu så har jag även en tabellkolumn som heter multiplier som vanligtvis är tom men om den innehåller en 2:a så vill jag att den produkten skall slumpas ut dubbelt så ofta, en trea = tre gånger så ofta, fyra = fyra gånger så fta osv. hur löser jag detta?

Medlem sedan juni 20019 519 inlägg
#2

rekomendera guffas exempel:
http://guffa.com/Programming_article.asp?id=37

Medlem sedan juni 20019 519 inlägg
#3

missförstod dig nog lite :r fundera på adrotater hur MS har gjort det :e får nog återkomma med något annat svar :e

Medlem sedan dec. 20003 887 inlägg
#4

Du behöver nog skapa en temporär tabell först som innehåller ditt urval med dubletter, tripplar och så vidare. Sedan väljer du slumpmässigt ur den tabellen.

Medlem sedan okt. 200111 inlägg
#5

Ett förslag:

SELECT DISTINCT IIF(multiplier IS NULL, 1 , multiplier ) FROM produkter

RecSet.GetRows()

Loopat igenom arrayen och bygg upp en ny array.
Antalet samma element ska spegla hur stor sannolikhet en träff ska vara för den multipliern

Typ "IS NULL","=2","=2","=3","=3","=3","=3","=4","=4","=4","=4","=4","=4"

Slumpa den nya arrayen

Frågat på nytt

SELECT * from produkter where multiplier " & arry(Cint( slumptal )) & " Order by rand() DESC LIMIT 1

/Uffe

Medlem sedan dec. 200012 464 inlägg
#6

Skapa en tabell med en kolumn av typen int. Fyll den med värden från 1 till något som åtinstone är lika stort som din största multipler

select produkter.* from produkter cross join integers 
 where integerColumn <= coalesce(multiplier,1) 
Order by rand() DESC 
LIMIT 1

Det vore bättre att lagra värdet 1 och inte null i multiplierkolumnen.

Flyttas från ASP.

Medlem sedan aug. 20011 087 inlägg
#7

Skall kolla på era lösningar.

ja självfallet så blir inte detta den kanske bästa lösningen men så blir det när man skall modifiera gammal kod och måste använda sig av befintliga databaser.

133 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)