---
title: "Problem med gruppering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/104708-problem-med-gruppering"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Del Pero"
published: "2004-05-31T16:16:11.000Z"
updated: "2004-06-01T14:06:44.000Z"
replies: 7
views: 303
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/104708-problem-med-gruppering"
---

# Problem med gruppering

## #1 — Del Pero, 2004-05-31T16:16Z

Jag ska presentera de åtta senaste nyheterna från varje kategori på min förstasida men får det inte att fungera. Antar att det är något problem med grupperingen.

```
$sql = "
SELECT a.id, a.intro, a.published, a.image, c.name
FROM articles a 
INNER JOIN categories c 
ON a.category = c.id 
WHERE a.public = '1' 
AND a.display = '1' 
AND a.published < " . mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ." 
GROUP BY a.category
ORDER BY a.published DESC 
LIMIT 0,8";
```

Som det blir nu så visas den artikel med lägst ID (a.id) från varje kategori och inte den senaste.
Kör MySQL 4.0.
Hur? :)

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

## #2 — LarsG, 2004-05-31T16:56Z

Det går inte att lösa med en fråga

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

## #3 — Del Pero, 2004-05-31T17:11Z

Ajdå... 
Hur skulle man lösa det smidigast med två (eller flera?) frågor? Lägga in alla ID i en array varefter man skrivit ut den kategorin och sen kolla om de redan finns där?

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

## #4 — LarsG, 2004-05-31T17:17Z

Jag ser två alternativ. 

Hämta data med nuvarande villkor och sortera på kategori och datum.  Sen så får du i PHO se till att bara visa 8 stycken per kategori.

Hämta alla kaetgorier. Sedan för varje kategori får du skapa en fråga som hämtar de 8 senaste.

Vilken är bäst?

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

## #5 — Del Pero, 2004-05-31T17:31Z

Jag är rädd att jag inte var tydlig nog. :r

Såhär vill jag ha det:
Det finns mer än åtta olika nyhetskategorier (i nuläget c:a 15 men det kommer öka med tiden).
Jag vill visa de åtta senaste nyheterna, oavsett kategori, men varje kategori får bara figurera en gång.

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

## #6 — LarsG, 2004-05-31T17:57Z

Jaha, det är det du vill. Men då är det bara samma teknik som i gårdagens fråga.

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

## #7 — LarsG, 2004-05-31T18:30Z

Så här

```
SELECT a.id, a.intro, a.published, a.image, c.name
FROM articles a 
INNER JOIN categories c 
ON a.category = c.id 
inner join articles a2 on a.category = a2.category
WHERE a.public = '1' 
AND a.display = '1' 
AND a.published < " . mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ." 
and a2.public = '1' 
AND a2.display = '1' 
AND a2.published < " . mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ." 
GROUP BY a.id, a.intro, a.published, a.image, c.name
having a.id = max(a2.id)
ORDER BY a.published DESC 
LIMIT 0,8
```

ungefär.

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

## #8 — Del Pero, 2004-06-01T14:06Z

Såhär löste jag det:

```
SELECT a.id, a.intro, a.published, a.image, c.name
FROM articles a 
INNER JOIN categories c 
ON a.category = c.id 
inner join articles a2 on a.category = a2.category
WHERE a.public = '1' 
AND a.display = '1' 
AND a.published < " . mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ." 
and a2.public = '1' 
AND a2.display = '1' 
AND a2.published < " . mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ." 
GROUP BY a.id, a.intro, a.published, a.image, c.name
having a.published = max(a2.published)
ORDER BY a.published DESC 
LIMIT 0,8
```

Ändrade
having a.id = max(a2.id)
Till
having a.published = max(a2.published)

Återigen, tack! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/104708-problem-med-gruppering
