---
title: "gruppering och sortering av händelser"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/147442-gruppering-och-sortering-av-händelser"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "The_Hulk"
published: "2006-05-29T13:34:28.000Z"
updated: "2006-05-29T18:44:40.000Z"
replies: 8
views: 365
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/147442-gruppering-och-sortering-av-händelser"
---

# gruppering och sortering av händelser

## #1 — The_Hulk, 2006-05-29T13:34Z

Hej!

Får inte ihop min SQL-sats.

Tabell
  Event

Fält 
event_id int
event_type_id int
event_time int
event_text varchar(50)

data
1 \| 1 \| 1 \| 'test'
2 \| 1 \| 5 \| 'hello'
3 \| 2 \| 10 \| 'hepp'
4 \| 3 \| 15 \| 'bong'
5 \| 2 \| 25 \| 'tjoff'
6 \| 4 \| 28 \| 'blaff'
7 \| 5 \| 30 \| 'zapp'
8 \| 1 \| 40 \| 'zoom'
9 \| 5 \| 53 \| 'pong'
10 \| 3 \| 65 \| 'end'

Jag få en lista med den senaste händelsen från varje event_type_id, sorterad efter event_type_id
8 \| 1 \| 40 \| 'zoom'
5 \| 2 \| 25 \| 'tjoff'
10 \| 3 \| 65 \| 'end'
6 \| 4 \| 28 \| 'blaff'
9 \| 5 \| 53 \| 'pong'

Har försökt på olika sätt men inte fått ihop det.
Någon som kan hjälpa mig?

Tycker inte detta ska vara så svårt men jag fick inte ihop det oavsett vad jag testade.

**/red** 
Bör kanske säga att det är MySQL 4.0.21 jag kör. så subselect fungerar inte vad jag vet.

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

## #2 — LarsG, 2006-05-29T14:27Z

```
select e1.event_type_id,
       e1.event_time,
       e1.event_text
 from event e1 join event e2 
  on e1.event_type_id = e2.event_type_id
  group by e1.event_type_id,
       e1.event_time,
       e1.event_text
  having e1.event_time = max(e2.event_time)
```

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

## #3 — The_Hulk, 2006-05-29T14:51Z

Det verkar fungera men var inte så snabbt.
testade jag på en tabell med 10 poster kunde man inte märka någon tid, men när det fanns 15 000 poster tog det MYCKET längre tid, runt 80 sekunder.

har index på tabellen, tror dock alla fält ligger i samma index.
tips på hur man kan optimera index?

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

## #4 — LarsG, 2006-05-29T15:38Z

Borde inte event_type_id och event_time vara primärnyckel? I  så fall kan du ta bort  kolumnen event_id.

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

## #5 — The_Hulk, 2006-05-29T15:54Z

kan man sätta flera fält som primär i mysql?

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

## #6 — LarsG, 2006-05-29T16:31Z

but of course.

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

## #7 — The_Hulk, 2006-05-29T18:00Z

skulle du även kunan förklara vad "having" innebär?
har aldrig sett det tidigare.

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

## #8 — The_Hulk, 2006-05-29T18:22Z

Varför måste man lösa det på det sättet?
varför fungerar det inte så här:

```
select e1.event_type_id,
       e1.event_time,
       e1.event_text
 from event e1
 group by e1.event_type_id
 order by e1.event_time desc
```

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

## #9 — The_Hulk, 2006-05-29T18:44Z

Löste det just nu genom att först plocka ut alla maxtider för de olika typerna och sedan köra en SQL-sats per typ. Det andra sättet tog bara längre och längre tid ju fler poster det fanns i databasen.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/147442-gruppering-och-sortering-av-händelser
