---
title: "Join-problematik"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/154837-join-problematik"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "celia"
published: "2006-12-13T13:05:23.000Z"
updated: "2006-12-14T10:45:19.000Z"
replies: 5
views: 486
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/154837-join-problematik"
---

# Join-problematik

## #1 — celia, 2006-12-13T13:05Z

Jag har två tabeller, en för priser och en för specialpriser och de ser likadana ut. I pristabellen finns det poster som inte finns i specialpriser, men det kan också finnas poster i specialpris-tabellen som inte finns i pristabellen (jo jag vet att det är idiotiskt!). Hur ska jag få ut alla produkter från båda tabellerna med rätt pris? Primary/Foreign Key är Id.

PRIS
Id
Produkt
Pris

SPECIAL
Id
Produkt
Pris

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

## #2 — headbug, 2006-12-13T13:14Z

Är det så att om det finns både ett pris och ett specialpris så är det specialpris som skall visas?

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

## #3 — celia, 2006-12-13T13:18Z

> **headbug skrev:**
>
> Är det så att om det finns både ett pris och ett specialpris så är det specialpris som skall visas?

Japp.

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

## #4 — Peter S, 2006-12-13T14:03Z

Nu talar du inte om vilket DBMS som används, men med MySQL kan du testa

```
select case
        when dt.spris is null then dt.pprod
        else dt.sprod
       end  as produkt
     , coalesce(dt.spris,dt.ppris) as pris
 from
(select p.id as pid
      , s.id as sid
      , p.produkt as pprod
      , s.produkt as sprod
      , p.pris as ppris
      , s.pris as spris
   from pris p
 left
   join special s
     on p.id = s.id
  union
 select p.id as pid
      , s.id as sid
      , p.produkt as pprod
      , s.produkt as sprod
      , p.pris as ppris
      , s.pris as spris
   from pris p
 right
   join special s
     on p.id = s.id) dt;
```

Finns stöd för FULL OUTER JOIN blir subqueryn litet mindre:

```
 select p.id as pid
      , s.id as sid
      , p.produkt as pprod
      , s.produkt as sprod
      , p.pris as ppris
      , s.pris as spris
   from pris p
full
 outer
   join special s
     on p.id = s.id
```

(Något sådant i alla fall.)

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

## #5 — celia, 2006-12-14T08:40Z

Jag använder Access. Stöder Access Full outer join?

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

## #6 — Peter S, 2006-12-14T10:45Z

Tveksamt. Du får nog försöka dig på den första varianten

```
select iif(dt.spris is null,dt.pprod,dt.sprod) as produkt
     , iif(dt.spris is null,dt.ppris,dt.spris) as pris
 from
(select p.id as pid
      , s.id as sid
      , p.produkt as pprod
      , s.produkt as sprod
      , p.pris as ppris
      , s.pris as spris
   from pris p
 left
   join special s
     on p.id = s.id
  union
 select p.id as pid
      , s.id as sid
      , p.produkt as pprod
      , s.produkt as sprod
      , p.pris as ppris
      , s.pris as spris
   from pris p
 right
   join special s
     on p.id = s.id) dt;
```

Möjligen kan Access vilja ha fler parenteser kring något uttryck.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/154837-join-problematik
