---
title: "Få de senast ändrade poster med group by"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/124268-få-de-senast-ändrade-poster-med-group-by"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Rocket"
published: "2005-03-13T11:15:12.000Z"
updated: "2005-03-13T19:20:24.000Z"
replies: 3
views: 319
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/124268-få-de-senast-ändrade-poster-med-group-by"
---

# Få de senast ändrade poster med group by

## #1 — Rocket, 2005-03-13T11:15Z

Hej.

Jag sitter och jobbar med att göra ett fotoalbum i PHP och mySQL. Nu håller jag på med några SQL-frågor som ska hämta de senaste ändringarna i fotoalbumet. Bland annat så vill jag visa de senaste bilderna men max en från varje kategori. Det fungerar inte som jag vill när det finns både nya och äldre bilder i samma kategori.

De tabellerna jag använder är:

Bilderna (photoAlbumImages)

```
id			int
originalFileName  	varchar
width			int
height			int
updated			timestamp
```

Koppling mellan bilder och kategorier (photoAlbumImgToCat)

```
id   		int
image  		int
previous  	int
category  	int
updated  	timestamp
```

Nu har jag följande SQL-fråga:

```
SELECT
	DATE_FORMAT(photoAlbumImages.updated, '%Y%m%d') AS updated,
	photoAlbumImages.id AS image,
	photoAlbumImgToCat.category AS category,
	max(photoAlbumImages.updated) as x
FROM
	photoAlbumImgToCat
LEFT JOIN
	photoAlbumImages
ON
	photoAlbumImgToCat.image = photoAlbumImages.id
GROUP BY
	photoAlbumImgToCat.category
ORDER BY
	x DESC
LIMIT
	10
```

Resultatet ger bilder från de 10 kategorierna som har de nyaste bilderna. Problemet är att det inte är de nyaste bilderna som visas utan den första/äldsta bilden ur varje kategori.

Hur ska jag göra för att få den nyaste posten när jag kör GROUP BY?

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

## #2 — LarsG, 2005-03-13T13:29Z

```
SELECT DATE_FORMAT(pai.updated, '%Y%m%d') AS updated,
       pai.id AS image,
       pc.category 
FROM photoAlbumImgToCat as pc
JOIN photoAlbumImages as pai ON pc.image = pai.id
where updated in (select max(updated)
  from photoAlbumImages 
  join photoAlbumImgToCat on photoAlbumImgToCat.image = photoAlbumImages.id
 where category = pc.category)
ORDER BY updated DESC
LIMIT 10
```

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

## #3 — Rocket, 2005-03-13T18:47Z

MySQL versionen som är installerad på servern har inte stöd för inbäddade frågor (heter det så på svenska?). Tips på andra sätt man kan lösa det på eller måste jag göra det i flera olika frågor.?

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

## #4 — LarsG, 2005-03-13T19:20Z

```
SELECT DATE_FORMAT(pai.updated, '%Y%m%d') AS updated,
       pai.id AS image,
       pc.category 
FROM photoAlbumImgToCat as pc
JOIN photoAlbumImages as pai ON pc.image = pai.id
JOIN photoAlbumImages as pai2 ON pai.id = pai2.id
group by DATE_FORMAT(pai.updated, '%Y%m%d'),
         pai.id,
         pc.category
having pai.updated = max(pai2.updated)
ORDER BY updated DESC
LIMIT 10
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/124268-få-de-senast-ändrade-poster-med-group-by
