---
title: "sql fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/62020-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "mattiasnordin"
published: "2002-12-12T21:47:43.000Z"
updated: "2002-12-13T19:48:48.000Z"
replies: 13
views: 367
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/62020-sql-fråga"
---

# sql fråga

## #1 — mattiasnordin, 2002-12-12T21:47Z

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.

Permalänk: https://www.webforum.nu/p/62020

## #2 — voigtann1, 2002-12-12T21:49Z

SQL = "Select top10(\*) from tabell where..."

red. förlåt uppfattade frågan lite väll snabbt :(

Permalänk: https://www.webforum.nu/p/884879

## #3 — Pace, 2002-12-12T21:58Z

```
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.

Permalänk: https://www.webforum.nu/p/884882

## #4 — LarsG, 2002-12-12T21:58Z

```
select top 10 * from
(select * from categories c
  where dateColumn in 
      (select max(dateColumn) from categories
    where categoryid = c.categoryid  ))
order by dateColumn desc
```

Permalänk: https://www.webforum.nu/p/884883

## #5 — mattiasnordin, 2002-12-12T21:59Z

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...

Permalänk: https://www.webforum.nu/p/884885

## #6 — mattiasnordin, 2002-12-12T22:02Z

Ojjj vad ni svarade snabbt... ska prova  :h

Permalänk: https://www.webforum.nu/p/884891

## #7 — mattiasnordin, 2002-12-12T22:12Z

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.

Permalänk: https://www.webforum.nu/p/884898

## #8 — mattiasnordin, 2002-12-13T18:50Z

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

Permalänk: https://www.webforum.nu/p/885390

## #9 — mattiasnordin, 2002-12-13T19:03Z

\<% 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 :-(

Permalänk: https://www.webforum.nu/p/885394

## #10 — LarsG, 2002-12-13T19:20Z

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 "
```

Permalänk: https://www.webforum.nu/p/885401

## #11 — mattiasnordin, 2002-12-13T19:30Z

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

Permalänk: https://www.webforum.nu/p/885406

## #12 — LarsG, 2002-12-13T19:36Z

Hur är tabellen indexerad? Ett sammansatt index på 
last_updated_date och last_updated_time kanske hjälper upp.

Permalänk: https://www.webforum.nu/p/885410

## #13 — mattiasnordin, 2002-12-13T19:40Z

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...

Permalänk: https://www.webforum.nu/p/885413

## #14 — LarsG, 2002-12-13T19:48Z

```
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
```

Permalänk: https://www.webforum.nu/p/885418

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/62020-sql-fråga
