---
title: "Self join (igen)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21852-self-join-igen"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Vide"
published: "2001-12-18T18:24:00.000Z"
updated: "2001-12-22T16:03:00.000Z"
replies: 25
views: 422
page: 1
pages: 2
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/21852-self-join-igen"
---

# Self join (igen)

_Sida 1 av 2._

## #1 — Vide, 2001-12-18T18:24Z

Tjenare!

/me och joinar är hopplösa... ;)

Har ett forum där jag skall lista inläggen efter de som har senaste svar (och utan svar), men jag får inte till själva joinen.

posts:
Id
HostId (0 om inlägget själv är 'host')
DateTime

Kan någon lära mig en gång för alla... :e

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

## #2 — LarsG, 2001-12-18T18:44Z

```
select f.*,coalesce((select max(datetime) from forum where hostid = f.id),datetime) as maxdate
 from forum as f
 where hostid = 0
 order by maxdate desc
```

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

## #3 — Vide, 2001-12-18T18:53Z

Hmm... skulle kanske nämnt att jag tyvärr använder Access.

Får att felmeddelande när jag exekverar den, men inget SQL-fel, utan ett ASP-fel.

Vad gör coalesce?

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

## #4 — LarsG, 2001-12-18T19:00Z

coalesce(a,b) \<==\> case when a is null then b end \<==\> iif(a is null,b,a)

Du kanske kan byta ut coalesce mot iif men jag är tveksam om Access tillåter select inuti en iif. Sen så kommer Access att skrika om 

```
order by maxdate
```

du får göra 

```
order by 4
```

dvs den 4:e kolumnen i select-listan.

Men som sagt, så tror jag inte på denna lösning i Access,. Jag funderar lite.

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

## #5 — @nders, 2001-12-18T19:01Z

Du har inte i asp-koden skrivit exakt som LarsG skrev? ;)

Skämt åsido, vad får du för asp-fel då?

Mvh,

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

## #6 — Vide, 2001-12-18T19:06Z

LarsG, oki... Så iif funkar i Access? Trevligt... :)

@nders, hehe... nä så borta är jag inte... :e

Felet är det mycket spännande: Unspecified error

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

## #7 — @nders, 2001-12-18T19:08Z

På vilken rad? på .open eller på execute?

Hur ser koden ut?

I övrigt så tror jag att LarsGs iif-variant bör fungera.

Mvh,

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

## #8 — Vide, 2001-12-18T19:18Z

på ".execute"...

Inte mycket på den raden... ;)
Set m_objRS = m_objConn.Execute(m_strSQL)

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

## #9 — LarsG, 2001-12-18T19:39Z

Det låter inte så upplyftande. Kan du köra sql-satsen direkt i Access?

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

## #10 — spango, 2001-12-18T20:50Z

snafu.

\[Redigerat av spango den 18 dec 2001\]

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

## #11 — Vide, 2001-12-18T21:11Z

LarsG, nej... den säger: "undefined function 'coalesce' in expression"

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

## #12 — @nders, 2001-12-18T21:12Z

Med iif-varianten.

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

## #13 — Vide, 2001-12-18T21:17Z

iif:

```
select f.*,iif((select max([datetime]) from posts where hostid = f.id),[datetime]) as [maxdate] from posts as f where hostid = 0 order by [maxdate] desc
```

I ASP säger den:
No value given for one or more required parameters.

När jag kör den i Access så frågar den först efter ett parametervärde för maxdate, och när man inte anger något, så funkar det fint...

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

## #14 — LarsG, 2001-12-18T21:27Z

Du får byta ut 

order by maxdate 

mot

order by n

där n är ordningstalet för maxdate i select-listan

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

## #15 — Vide, 2001-12-18T21:35Z

Okej, nu visar den iaf posterna, men det visar fler än vad som finns (med hostid = 0), och inte i rätt ordning.

```
select f.Id, f.subject, f.userid, f.datetime, iif((select max([datetime]) from posts where hostid = f.id),[datetime]) as maxdate from posts as f where hostid = 0 order by 5 desc
```

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

## #16 — LarsG, 2001-12-18T21:50Z

Att den visar för många poster förstår jag inte varför.

Ordningen däremot 

```
select f.Id, f.subject, f.userid, f.datetime, iif((select max([datetime]) from posts where hostid = f.id) is null,[datetime],(select max([datetime]) from posts where hostid = f.id)) as maxdate from posts as f where hostid = 0 order by 5 desc
```

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

## #17 — Vide, 2001-12-18T21:56Z

Argh...

Att den hämtade flera poster var bara ett slarvfel, dock är ordningen fortfarande lite konstig, skall kolla lite närmare på hur den sorterar nu och se om jag hittar något...

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

## #18 — Vide, 2001-12-18T23:51Z

Nä ni, hittar inget... men det måste ligga i iif-satsen. Det verkar som om den sorterar efter "f.datetime", men den har jag ju inte angivit som order by fält... :q

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

## #19 — LarsG, 2001-12-18T23:58Z

```
select f.Id, f.subject, f.userid, f.datetime, iif((select max([datetime]) from posts where hostid = f.id) is null,[b]f.[/b]datetime,(select max([datetime]) from posts where hostid = f.id)) as maxdate from posts as f where hostid = 0 order by 5 desc
```

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

## #20 — Vide, 2001-12-19T00:02Z

Nope... samma som förut...

Såhär ser det ut nu:

```
select f.Id, f.subject, f.userid, f.datetime, f.forumid = 1, iif((select max([datetime]) from posts where hostid = f.id and f.forumid = 1) is null,f.datetime,(select max([datetime]) from posts where hostid = f.id and f.forumid = 1)) as maxdate from posts as f where hostid = 0 and f.forumid = 1 order by 6 desc
```

Detta borde ju inte vara ett så ovanligt problem att man vill sortera efter senaste inlägget, varför är det så svårt för... :q ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21852-self-join-igen  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/21852-self-join-igen/page2.md
