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