---
title: "Joina post om det bara finns en med unikt ID?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/192340-joina-post-om-det-bara-finns-en-med-unikt-id"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "bassebhu"
published: "2014-06-14T16:18:00.000Z"
updated: "2014-06-15T19:44:16.000Z"
replies: 6
views: 1232
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/192340-joina-post-om-det-bara-finns-en-med-unikt-id"
---

# Joina post om det bara finns en med unikt ID?

## #1 — bassebhu, 2014-06-14T16:18Z

Hallå!

Jag vill hämta alla poster från tabell A och left joina tabell B och hämta fältet verk_id, men bara om det endast finns en träff. Hur gör jag det smidigast?

T.ex.

```
SELECT tabell_a.titel, tabell_b.verk_id
LEFT JOIN tabell_b ON tabell_b.rel_id = tabell_a.id
om räkna tabell_b-träffar = 1
```

Måste jag baka in en till fråga och köra en COUNT eller nåt?

Jag vill alltså få ut fältet titel alltid och verk_id bara om det finns endast en träff (och jag måste då få värdet från fältet verk_id), annars så ska verk_id returnera tomt.

Tack för hjälp!

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

## #2 — casca, 2014-06-14T16:25Z

LIMIT 1?

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

## #3 — bassebhu, 2014-06-14T16:27Z

Ja, fast jag vill bara returnera fältet verk_id om det bara finns en relation i tabell_b. LIMIT 1 begränsar väl bara vad som returneras till 1?

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

## #4 — nitro2k01, 2014-06-15T07:47Z

LEFT JOIN matchar normalt även om du får ut noll träffar från den injoinade tabellen. Är det så du vill ha det, eller just precis bara en träff?

Prova:

```
SELECT tabell_a.titel, tabell_b.verk_id
INNER JOIN tabell_b ON tabell_b.rel_id = tabell_a.id
GROUP BY tabell_a.id
HAVING count(tabell_b.rel_id) = 1;
```

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

## #5 — bassebhu, 2014-06-15T09:56Z

Jag vill alltid hämta allt från tabell_a så jag gissar att det är LEFT JOIN jag ska ha.
Värdet från tabell_b ska bara hämtas om det finns 1 träff där, annars ska det vara null eller 0 eller vad som helst som kan jämföras med.

Tack för hjälpen!

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

## #6 — nitro2k01, 2014-06-15T13:04Z

Ah, då ska du ha en LEFT JOIN, inte INNER som jag skrev i svaret. Som frågan ser ut nu så kommer något bara hämtas ut om det finns precis en matchning i tabell_b, dvs inte om det finns noll matchningar i tabell_b. Jag har även ändrat \< till \<= i jämförelsen.

```
SELECT tabell_a.titel, tabell_b.verk_id
LEFT JOIN tabell_b ON tabell_b.rel_id = tabell_a.id
GROUP BY tabell_a.id
HAVING count(tabell_b.rel_id) <= 1;
```

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

## #7 — bassebhu, 2014-06-15T19:44Z

Sweet, funkar. tack!  :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/192340-joina-post-om-det-bara-finns-en-med-unikt-id
