mattiasnordinMedlem sedan maj 20012 062 inlägg
Vill ha ut top 10 från accessdatabas. Vill visa de 10 senast uppdaterade men högst en per kategori. Alltså om vi har en kategori som heter katter (med massor med rader) så vill jag bara ha ut en av dessa rader och sedan 9 andra rader från övriga kategorier sorterat på tiden...
Databasen ser ut så här:
id | category | last_updated_time | last_updated_date | etc...
Det jag inte förstår är hur man exkluderar så att vi bara får en träff per kategori.
voigtann1Medlem sedan juni 20018 810 inlägg
SQL = "Select top10(*) from tabell where..."
red. förlåt uppfattade frågan lite väll snabbt :(
PaceMedlem sedan juni 20015 947 inlägg
SELECT TOP 10 fälten FROM tabellen
GROUP BY category
ORDER BY last_updated_date DESC
Lägg ihop last_updated_time och last_updated_date till ett fält, finns ingen anledning att ha dem separerade.
LarsGMedlem sedan dec. 200012 465 inlägg
select top 10 * from
(select * from categories c
where dateColumn in
(select max(dateColumn) from categories
where categoryid = c.categoryid ))
order by dateColumn desc
mattiasnordinMedlem sedan maj 20012 062 inlägg
en vanlig TOP 10 fråga vet jag hur man gör men jag vill att den ska ta hänsyn till att det enbart får finnas en träff per kategori även om en kategori har fler nya datum än en annan...
mattiasnordinMedlem sedan maj 20012 062 inlägg
Ojjj vad ni svarade snabbt... ska prova :h
mattiasnordinMedlem sedan maj 20012 062 inlägg
Jag får det inte att funger men det beror nog på att jag är så trött så att jag inte längre ser skärmen.,... Ska prova mer i morgon.
mattiasnordinMedlem sedan maj 20012 062 inlägg
Hej Lars (och alla andra)...
Har labbat lite med koden jag fick av dig och har nästan fått det att fungera...
<% sql = "select top 10 * from "
sql = sql & "(select * from T_picture_stats c"
sql = sql & " where last_updated_date in"
sql = sql & "(select max(last_updated_date) from T_picture_stats"
sql = sql & " where picture_kategori = c.picture_kategori ))"
sql = sql & " order by last_updated_date desc"
Så här ser numer databasen ut...
ID | picture_kategori | picture | last_updated_date | last_updated_time
Problemet består av att jag får ut 160 träffar istället för 10. Jag får även dubletter, dvs samma "picture_kategori" visas flera gånger.
Tacksam för hjälp.
Mvh
Mattias
mattiasnordinMedlem sedan maj 20012 062 inlägg
<% sql = "select top 10 * from "
sql = sql & "(select * from T_picture_stats c"
sql = sql & " where last_updated_date in"
sql = sql & "(select max(last_updated_date) from T_picture_stats"
sql = sql & " where picture_kategori = c.picture_kategori ))"
sql = sql & " order by last_updated_date desc, picture_kategori DESC"
%>
Fungerar lite bättre. Returnerar nu rätt antal, men fortfarande fel med kategorierna. Det verkar även ta ett bra tag för sidan har blivit jätteseg :-(
LarsGMedlem sedan dec. 200012 465 inlägg
Varför har du delat upp last_updated_date och last_updated_time i två kolumner?
sql = "select top 10 * from " & _
" (select * from T_picture_stats c where id in " & _
" (select top 1 id from T_picture_stats " & _
" where picture_kategori = c.picture_kategori " & _
" order by last_updated_date desc, last_updated_time desc,id))" & _
" order by last_updated_date desc, last_updated_time desc,id "
mattiasnordinMedlem sedan maj 20012 062 inlägg
jag har inte någon anledning... ha ha .... hmmm... det känndes bra för tillfället att använda två columner... sorry!
Jag böjer mig på mina bara knän. Din fråga är perfekt. Resultatet är som jag vill ha det.
Något strular dock för det tar ca tre sekunder innan sidan kommer upp. Jag har 91 kategorier och 1000 bilder fördelat i dessa. Är det en mer krävande fråga än de vanliga select a b c frågorna jag använder på samma sida?
Tack för hjälpen ! :e
LarsGMedlem sedan dec. 200012 465 inlägg
Hur är tabellen indexerad? Ett sammansatt index på
last_updated_date och last_updated_time kanske hjälper upp.
mattiasnordinMedlem sedan maj 20012 062 inlägg
Det låter kul...
Hur gör man ett sammansatt index i access? Jag har aldrig gjort det förut.
Igentligen behöver jag nog inte ha både datum och tid i olika columner, kanske är bättre att ändra det...
LarsGMedlem sedan dec. 200012 465 inlägg
create index longTallSally on T_picture_stats(last_updated_date desc,
last_updated_time desc,id)
Jag tog med id också. Nu vet jag inte om Access tillåter att man anger sorteringsordning i index. Om inte, så får du ta bort desc
Du kan ju testa och lägga ett på category_id också. Om det inte hjälper så går det att ta bort index med
drop index longTallSally