BoorgMedlem sedan okt. 2004409 inlägg Hej.
Har en Sql sträng som ser ut såhär:
Select DISTINCT a.name as n, a.created_on as c, b.Url as Url From photo a Left Join select_photo b on a.id = b.photo_id Order By a.created_on
Jag har ett bildgalleri där jag loopar ut den första bilden i varje galleri. Men nu vill jag ha så att den loopar ut en random bild som tillhör samma photo_id..
förstår ni? :)
Mvh Jesper borg
BoorgMedlem sedan okt. 2004409 inlägg Order By rnd(b.id)
får felmedelandet att:
Microsoft JET Database Engine (0x80004005)
ORDER BY-instruktionen (rnd(b.id)) stämmer inte med DISTINCT.
emissionMedlem sedan dec. 19996 721 inlägg Om man kör DISTINCT så måste ORDER-kolumnerna finnas med i SELECT:en.
Kör du ASP?
http://www.webforum.nu/showthread.php?p=1112611#post1112611
BoorgMedlem sedan okt. 2004409 inlägg ja jag kör asp.
Randomize
seed = (CInt(1000 * Rnd) + 1) * -1
Sql = "Select DISTINCT a.name as n, a.created_on as o, mid(MAX(left(cstr(int(9000*rnd(b.id*" & seed & ")+1000)),4) + b.Url),5) as Url From photo a Left Join select_photo b on a.id = b.photo_id Order By a.created_on "
Får massa fel nu men inte på det?
Den gillar inte att jag har as n och as o. Ser inget fel i Sql satesn som den va, har bara lagt till det som du gav mig.
Medelande:
Microsoft JET Database Engine (0x80040E21)
Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'n'.
LarsGMedlem sedan dec. 200012 464 inlägg Select a.name as n,
a.created_on as c,
b.Url
From photo a Left Join select_photo b
on a.id = b.photo_id
where url in
(select top 1 url
from select_photo c
where c.photo_id = b.photo_id
Order By rnd(<frö>))
emissionMedlem sedan dec. 19996 721 inlägg Du kan inte köra DISTINCT, utan måste använda GROUP BY
Randomize
seed = (CInt(1000 * Rnd) + 1) * -1
Sql = "Select a.name as n, a.created_on as o, mid(MAX(left(cstr(int(9000*rnd(b.id*" & seed & ")+1000)),4) + b.Url),5) as Url From photo a Left Join select_photo b on a.id = b.photo_id Group By a.name,a.created_on Order By a.created_on "
BoorgMedlem sedan okt. 2004409 inlägg Nu fungerar det bättre =)
Va tvungen att ändra url från Pm till text, men nu gillar den inte null någonstans. Men det finns itne null någondstans... kan det ha något o göra med koden som du gav?
Microsoft JET Database Engine (0x80040E14)
Ogiltigt Null
emissionMedlem sedan dec. 19996 721 inlägg Det beror på LEFT-joinen. Skulle dock föreslå LarsG:s variant i stället. Det föll mig aldrig in att ta med b.photo_id i IN-satsen.
Sammantaget, med två smärre modifikationer av LarsG:s variant
Randomize
seed = (CInt(1000 * Rnd) + 1) * -1
Sql = "SELECT a.name AS n, a.created_on AS c, b.Url FROM photo a LEFT JOIN select_photo b ON a.id = b.photo_id WHERE url in (SELECT top 1 url FROM select_photo c WHERE c.photo_id = a.id ORDER BY rnd(" & seed & "*[b]c.id[/b])) [b]OR url is null[/b] ORDER BY a.created_on"
Modifieringarna är införandet av en faktor (b.id, där jag antagit att du har ett id på själva bilden) för att få rnd-funktionen att variera, och en "OR url is null", som jag tog med eftersom din LEFT-join indikerade att du även ville ha med gallerier som saknar bilder.