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?
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'.
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ö>))
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 "
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
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.