webForumDet fria alternativet

Hjälp med random och sql.

6 svar · 539 visningar · startad av ConnyFox

ConnyFoxMedlem sedan aug. 20011 087 inlägg
#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?

voigtann1Medlem sedan juni 20019 519 inlägg
#2

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

voigtann1Medlem 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

Engine^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.

UffeVäxjö!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

LarsGMedlem 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.

ConnyFoxMedlem 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.

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