Ved ikke om dette hjælper, men når jeg benytter mig af tilfældige data, eksempelvis til stikprøveudtagelse, benytter jeg denne funktion sammen med Rnd() syntaxen :
Function Randomizer() As Integer
Static AlreadyDone As Integer
If AlreadyDone = False Then Randomize: AlreadyDone = True
Randomizer = 0
End Function
Eksempel ( tilfældigt udtræk af 5 stikprøver )
SELECT TOP 5 qryIdentificérLogData_Husejere.[LEVDØR No], qryIdentificérLogData_Husejere.JLDATE, tblDate.Year, tblDate.WeekNo
FROM tblDate INNER JOIN qryIdentificérLogData_Husejere ON tblDate.OriginalDate = qryIdentificérLogData_Husejere.DATE
GROUP BY qryIdentificérLogData_Husejere.[LEVDØR No], qryIdentificérLogData_Husejere.JLDATE, tblDate.Year, tblDate.WeekNo
HAVING (((tblDate.Year)=[Vælg år : ]) AND ((tblDate.WeekNo)=[Vælg uge nr : ]) AND ((randomizer())=0))
ORDER BY Rnd(IsNull(qryIdentificérLogData_Husejere.[LEVDØR No])*0+1);
Hej - tak for dit eksempel. Men det er ikke tilfældighedsgeneratoren der er problemet. Det vil heller ikke virke med "ORDER by ID"
Det er kombinationen af DISTINCT og ORDER BY der ikke vil fungere.
Ok, så vil en ekstra forespørgsel måske løse det
ja jo.. det kan man måske også godt forstå den ikke lige vil. Men du kunne fjerne bruger.ID
ORDER BY Rnd(-10000000*TimeValue(Now()))
Det er jo stadigvæk helt random :)
Jeg kan godt fjerne ID, men problemet er stadig at ORDER og DISTINCT konflikter:
Fejl:
ORDER BY clause (Rnd(-10000000*TimeValue(Now()))) conflicts with DISTINCT.
torotune, hvad precis siger fejlmeddelelsen? Du er vel opmaerksom paa at By er et reserveret ord i adskillige dialekter af SQL? Der bestaar den mulighed at den konfliktende faktor er at du kalder et felt By. Du har ogsaa den samme ON klausul to gange "ON (PostnummerTabel.Postnr = bruger.PostNr) AND (PostnummerTabel.Postnr = bruger.PostNr)", men det er vel blot overfloedigt uden at konflikte med noget.
Jeg testede din query i MySql fordi det er hvad jeg har til raadighed. Jeg oprettede tre tabeller torotune_bruger, torotune_PostNr, og torotune_Keywords. Jeg var noedt til at erstatte Rnd() med Rand() og TimeValue() med Timestamp(). Med disse rettelser, og ved at jeg kalte feltet "Stad" i stedet for "By" fik jeg denne query til at virke uden konflikter eller fejlmeldinger:
SELECT DISTINCT b.ID, b.Navn, b.Adresse, p.PostNr, p.Stad FROM torotune_PostNr p INNER JOIN torotune_bruger b ON p.Postnr = b.PostNr AND p.Postnr = b.PostNr INNER JOIN torotune_Keywords k ON b.ID = k.brugerID
WHERE k.Keyword Like 'navn3%' OR b.Navn Like 'navn3%'
ORDER BY Rand(-10000000*Timestamp(Now()));
torotune, fik du mit indlaeg? Jeg ville vaere glad for en reaktion, isaer at du giver den noejagtige ordlyd paa fejlmeldingen. Hvis du har haft tid til at teste det at undgaa det reserverede ord By som feltnavn ville det ogsaa vaere interessant at kende resultatet.
Hej igen Christian. Tak for din test der.
Min fejlmeddelelse siger:
ORDER BY-delsætningen (Rnd(-10000000*TimeValue(Now()))) er i konflikt med DISTINCT.
Jeg skal lige kigge lidt ekstra på den SQL-sætning du tester med der.
Mvh.
torotune, fik du kikket paa det? Spoergsmaalet er en uge gammelt nu. Det ville vaere godt enten at faa det konkluderet (lukket, med eller uden points til mig eftersom mit indlaeg viste sig at vaere nyttigt eller ikke) eller at faa dine specifikke reaktioner som man kan arbejde videre med.
Hej Christian, jeg fik ikke helt løst problemet, da jeg stadig har en konflikt mellem ORDER og DISTINCT. Men du skal have tak fordi du tog dig tid til at hjælpe og fordi du også testede det og fik det til at virke. Jeg accepterer herfor din hjælp som et svar. Mvh.