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