---
title: "Group By"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/45969-group-by"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "oJones"
published: "2002-06-15T14:47:18.000Z"
updated: "2002-06-16T18:07:49.000Z"
replies: 5
views: 215
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/45969-group-by"
---

# Group By

## #1 — oJones, 2002-06-15T14:47Z

Hej!

Har tre stycken tabeller som heter lank, sub och kat.
Försöker räkna ut hur många länkar (lank.lank_namn) det finns där posten har samma sub_id (lank.sub_id).

Använder jag mig av:

```
Set RecSet = Connect.Execute("SELECT count(lank.lank_id) as antal FROM lank WHERE lank.sub_id = 1")
```

Så ger den korrekt svar (dvs 2), men såfort jag försöker blanda in de andra tabellerna för att få fram annan information så börjar den plötsligt ge felaktiga svar.

Följande kod:

```
Set RecSet = Connect.Execute("SELECT kat.*, sub.*, count(lank.lank_id) as antal FROM lank, sub, kat WHERE lank.sub_id = 1 GROUP BY lank.lank_id")
```

Ger svaret 12.

Jag gissar på att det är min GROUP BY som är fel, men jag har ingen aning om vilket fält den ska grupperas efter. Någon som kan hjälpa mig?

Jag kör OPTION=16384, ASP och Windows.

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

## #2 — oJones, 2002-06-15T14:54Z

Fick det att fungera med följande kod, men kan någon vara vänlig o förklara vad GRUOP BY är till för och hur det ska användas?

```
Set RecSet = Connect.Execute("SELECT kat.*, sub.*, count(DISTINCT lank.lank_id) as antal FROM lank, sub, kat WHERE lank.sub_id = 1 GROUP BY lank.sub_id")
```

\[r\]
\*bah\* Fungerar ändå inte när jag försöker köra det med resten av koden.

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

## #3 — LarsG, 2002-06-15T15:21Z

Kan du beskriva dina tabeller med lite exempledata och vad du färväntar deig för resultat.

Om du skall lära dig något om group by så skall du absolut inte läsa mysql-dokumentationen.

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

## #4 — oJones, 2002-06-15T15:37Z

Tabell kat:
kat_id
kat_namn

Tabell sub:
sub_id
kat_id
sub_namn

Tabell lank:
lank_id
sub_id
kat_id
lank_namn

Jag vill räkna ut hur många länkar det finns i var kategori.
Första posten i lank är:
lank_id = 1
sub_id = 1
kat_id = 1
lank_namn = Adam

Andra posten blir således:
lank_id = 2
sub_id = 1
kat_id = 1
lank_namn = Bertil

Jag kan räkna ut hur många det finns i var kategori, men om jag i samma fråga vill plocka fram kat.kat_namn och sub.sub_namn så blir allting galet.

Jag tycker att följande kod borde fungera:

```
Set RecSet = Connect.Execute("SELECT kat.kat_namn, sub.sub_namn, count(DISTINCT lank.lank_id) as antal FROM kat, sub, lank WHERE lank.sub_id = sub.sub_id GROUP BY lank.lank_id ORDER BY kat.kat_namn, sub.sub_namn, lank.lank_namn ASC")
```

Men det är tydligen fel.

Ska akta mig för mysql-dokumentationen ;p

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

## #5 — oJones, 2002-06-15T15:42Z

Ska kanske tillägga att jag loopar igenom alla recset för att få fram information som:

Medier (6 länkar)  \[kat_namn (antal)\]
Tv, tidningar, radio \[sub_namn, sub_namn, sub_namn\]

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

## #6 — LarsG, 2002-06-16T18:07Z

I och med att det finns flera sub_namn i varje kategori så kan du inte få både antalet länkar och namnen i en fråga (i varje fall inte i Mysql.)

Det blir nog enklast att hämta allting till klienten mha getrows och göra summeringarna där.

Varför har du med kolumnen kat_id i tabellen lank?

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/45969-group-by
