---
title: "Joins"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/163539-joins"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Gladh"
published: "2007-08-16T12:12:21.000Z"
updated: "2007-08-17T06:47:39.000Z"
replies: 2
views: 333
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/163539-joins"
---

# Joins

## #1 — Gladh, 2007-08-16T12:12Z

Hallå!

Jag har lite problem med Join som inte fungerar som jag trodde :(

Jag har 2 tabeller, en som heter Language som innehåller de olika språk som kan finnas i en databas. Där har jag 2 poster sv-SE och en-US som båda är definerade som nyckel (identifier)

Till detta har jag sedan en massa olika language tabeller. Till min Category tabell så har jag en speciell LanguageCategory. Så jag kan på ett enkelt sätt kan få ut rätt "namn" på kategorin utifrån språk och kategoriID.

I Min LanguageCategory tabell så har jag en post som består av följande data: 

categoryIdentifier: ccd63987-4681-402c-b722-2686daf64900
languageIdentifier: sv-SE
name:                  Möbler

Jag vill nu plocka ut all de olika språk som jag har (2 st) och matcha ihop med de kategorier som jag har (1 st). Men jag vill även visa de språk som inte har en kategori, så jag kan fylla i värde för detta språk. 

Jag trodde en Right join skulle fungera bra för mig här: 

```
SELECT     dbo.Language.identifier, dbo.LanguageCategory.name
FROM         dbo.LanguageCategory RIGHT OUTER JOIN
                      dbo.Language ON dbo.LanguageCategory.languageIdentifier = dbo.Language.identifier
WHERE     (dbo.LanguageCategory.categoryIdentifier = 'ccd63987-4681-402c-b722-2686daf64900')
```

Det ger mig

```
identifier              name
============================
sv-Se                 Möbler
```

Men jag vill ha:

```
identifier              name
============================
sv-Se                 Möbler
en-US                 NULL
```

Hur skall jag lösa detta?

\- M

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

## #2 — @nders, 2007-08-16T12:16Z

Om du sätter villkor i WHERE-tabellen på den "icke krävda" tabellen gör du egentligen om din outer join till en inner. Flytta villkoret till join-satsen istället:

```
SELECT     dbo.Language.identifier, dbo.LanguageCategory.name
FROM         dbo.LanguageCategory RIGHT OUTER JOIN
                      dbo.Language ON dbo.LanguageCategory.languageIdentifier = dbo.Language.identifier
AND   dbo.LanguageCategory.categoryIdentifier = 'ccd63987-4681-402c-b722-2686daf64900'
```

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

## #3 — Gladh, 2007-08-17T06:47Z

Aaaa....

Tack, då fungerar Right join som jag misstänkte. Men jag skall låta bli att använda Sql Servers autogenerering av SQL när man bygger vyer...

\- M

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/163539-joins
