---
title: "Group BY i dubbel join"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11167-group-by-i-dubbel-join"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jörgen HP"
published: "2001-08-16T19:38:00.000Z"
updated: "2001-08-17T20:46:00.000Z"
replies: 8
views: 294
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/asp/11167-group-by-i-dubbel-join"
---

# Group BY i dubbel join

## #1 — Jörgen HP, 2001-08-16T19:38Z

Hej!

Vill gruppera följande, men den vill ej grupperas:

```

strSQL ="SELECT Categorier.IntForumId, Categorier.ForumName, Categorier.ForumUse, Categorier.ForumThreads, " & _
"Categorier.ForumPosts, Inlagg.dteDate, Svar.Svar_dteDate, Categorier.ForumModerator FROM b1180.Categorier " & _
"INNER JOIN b1180.Inlagg ON " & _
"Categorier.IntForumId = Inlagg.Categori_Id " & _
"INNER JOIN b1180.Svar ON Inlagg.Categori_Id = Svar_ForumId " & _
"GROUP BY Categorier.ForumName"
```

Den fungerar bra i övrigt, jag har kanske klantat någonstans? :q

mvh Jörgen

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

## #2 — LarsG, 2001-08-16T19:52Z

Vad vill du uppnå? Vad menar du med att det inte fungerar?

Det står i Mysql-manualen att om man använder group by på det sättet så kan det ge oväntade resultat. Det är inte standard att skriva så där.

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

## #3 — jorgen, 2001-08-16T20:50Z

Hej!

Jag vill hämta:

IntForumId,ForumName,ForumUse,ForumThreads,ForumPosts, ForumModerator från tabellen Categorier

dteDate från tabellen inlägg

Svar_dteDate från tabellen svar

Sedan loopar jag recsetet så ja får något i stil med:

**Forum &#0124; Trådar &#0124; Inlägg &#0124; Senaste inlägg &#0124; Modeartor**

Första Forumet &#0124; 96 &#0124; 234 &#0124; 2001-08-12 &#0124; Kalle

Andra Forumet &#0124; 116 &#0124; 576 &#0124; 2001-08-14 &#0124; Hugo

Tredje Forumet &#0124; 12 &#0124; 21 &#0124; 2001-08-15 &#0124; Hobbe

Den skriver i nuvarande stund ut alla uppgifter men bara det forumet som har ForumId 3. De forumen som har forumId 2 eller 1 skrivs inte ut. Så resultatet är nu:

Tredje Forumet &#0124; 12 &#0124; 21 &#0124; 2001-08-15 &#0124; Hobbe

istället för:

Första Forumet &#0124; 96 &#0124; 234 &#0124; 2001-08-12 &#0124; Kalle

Andra Forumet &#0124; 116 &#0124; 576 &#0124; 2001-08-14 &#0124; Hugo

Tredje Forumet &#0124; 12 &#0124; 21 &#0124; 2001-08-15 &#0124; Hobbe

Så som det ser ut nu är jag glad om det funkar, kan inga standarder :(

Hajar ni?

Mvh Jörgen

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

## #4 — LarsG, 2001-08-16T21:36Z

Att du bara får fram poster för forumid 3 beror inte på group by utan mer på att det inte blir någon match i ditt join-villkor. 

Använder du rätt kolumner i ditt join-villkor? Jag tycker att det ser konstigt ut då du har inlagg.categori_id med i båda on-klausulerna.

Sen så behöver du nog en outer join mellan inlägg och svar då det kan finnas inlägg som inte har några svar.

Om jag förstår din datamodell rätt så borde själva group by biten se ut

```
SELECT Categorier.IntForumId, Categorier.ForumName, Categorier.ForumUse, Categorier.ForumThreads, 
Categorier.ForumPosts, Inlagg.dteDate, max(Svar.Svar_dteDate) as svar_dteDate, Categorier.ForumModerator 
...
group by Categorier.IntForumId, Categorier.ForumName, Categorier.ForumUse, Categorier.ForumThreads,
Categorier.ForumPosts, Inlagg.dteDate, 
Categorier.ForumModerator
```

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

## #5 — jorgen, 2001-08-16T21:55Z

Hej!

Jag har relation mellan tabellerna med hjälp av ForumId, Joiner följer mänster:

```

SELECT * FROM Table1 INNER JOIN table2 ON tabell1.fält = tabell2.fält
 INNER JOIN Table3 ON tabell2.fält2 = Table3.fält
```

tabell2.fält2. vadå fält 2 jag har bara 1 forumid i varje tabell.

outer join  :q
Hur myglar man in den i sammanhanget?

mvh Jörgen

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

## #6 — LarsG, 2001-08-17T09:28Z

Jag måste ha en beskrivning av din datamdodell. Är det den som PatrikB föreslog i ett tidigare inlägg?

Outer join:

```

select * from a left outer join b
  on a.id = b.id
```

innebär att man får alla rader från den vänstra tabellen (a) oavsett om det finns matchande rader i den högra tabellen (b).

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

## #7 — jorgen, 2001-08-17T10:21Z

Okey, tack larsg, då vet jag hur en left outer join fungerar. :e

Mina tabeller ser ut enligt nedan:

```

Tabell Categorier:

IntForumId
ForumUse
ForumName
ForumModerator

Tabell Inlagg:

MessId
Subject  
Comment
dteDate
AnvId  
Catogori_Id 

Tabell svar:

Svar_Id
Svar_Comment
Svar_MessId
Svar_ForumId
Svar_AnvId
Svar_dteDate

Relation mellan alla tabeller med Svar_ForumId, Catogori_Id, IntForumId

Relation mellan Svar och Inlagg

Svar_MessId, MessId
```

vänligen Jörgen

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

## #8 — jorgen, 2001-08-17T14:25Z

Hej!

Hittade en fungerande version, nu ska jag bara fixa till maxdatum också.

lägger ut så kanske det hjälper någon annan också.

```

strSQL ="SELECT Categorier.*, Inlagg.dteDate," & _
" Svar.Svar_dteDate, Inlagg.dteDate " & _
 
"FROM " & _

"b1180.Categorier LEFT JOIN b1180.Inlagg " & _
"ON Inlagg.IntForumId = Categorier.IntForumId " & _

"LEFT JOIN " & _

"b1180.Svar ON Inlagg.IntForumId = Svar.IntForumId  " & _
"group by Categorier.IntForumId "
```

mvh Jörgen

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

## #9 — LarsG, 2001-08-17T20:46Z

```
SELECT C.ForumName, max (case when I.dteDate > S.Svar_dteDate then 
                         I.dteDate else s.svar_dteDate end) as dteDate,
       count(distinct messid) as threads,
       count(*) as total, c.forummoderator
                             
 FROM b1180.Categorier as c LEFT JOIN b1180.inlagg as i
   ON i.categori_id = C.IntForumId 
   LEFT JOIN b1180.svar as s
   ON I.messid = S.svar_messid 
 group by C.ForumName, c.forummoderator
```

med reservation för att det inte är uttestat med Mysql.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11167-group-by-i-dubbel-join
