---
title: "joina tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/61800-joina-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Percy"
published: "2002-12-10T14:46:58.000Z"
updated: "2002-12-10T17:05:11.000Z"
replies: 5
views: 212
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/61800-joina-tabeller"
---

# joina tabeller

## #1 — Percy, 2002-12-10T14:46Z

Hej!

Har 4 st tabeller:
Person
Tillfälle
Vaccin
koppling mellan vaccin och tillfälle

det jag vill att sql-frågan skall göra är att lista alla personer oavsett om de blivit vaccinerade eller ej, och även visa de vaccinationer som de personer som har vaccinerats har fått.
Som det är nu visas samtliga personer oberoende av om de är vaccinerade eller ej, men felet är att den gör exakt lika många poster till alla personer oberoende av vad de egentligen har vaccinerats för (detta gäller även de personer som ej är vaccinerade).
så förekommer det ex. 4 st olika typer av vaccinationer så har alla personerna 4 st poster.

Känns som om jag har fel typ av join. är det någon som kan lösa detta?

```
SELECT Users.UserId, Users.UserSurname, Users.UserLastname, Users.PersonNumber, Occasion.VaccineDate, Occasion.Comment, Vaccine.VaccineName, Signature.SignatureName
FROM Users
LEFT JOIN Company ON Company.CompanyId = Users.CompanyId
LEFT JOIN Occasion ON Occasion.UserId = Users.UserId
LEFT JOIN OccasionVaccine ON OccasionVaccine.OccasionId = OccasionVaccine.OccasionId
LEFT JOIN Vaccine ON Vaccine.VaccineId = OccasionVaccine.VaccineId
LEFT JOIN Signature ON Signature.SignatureId = Occasion.SignatureId
WHERE Users.CompanyId = 1
```

tack på förhand

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

## #2 — Percy, 2002-12-10T16:19Z

Har du ngt lösningsförslag LarsG, skall man använda sig av outer join?

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

## #3 — LarsG, 2002-12-10T16:34Z

```
SELECT Users.UserId, Users.UserSurname, Users.UserLastname, Users.PersonNumber, Occasion.VaccineDate, Occasion.Comment, Vaccine.VaccineName, Signature.SignatureName
FROM Users
LEFT JOIN Company ON Company.CompanyId = Users.CompanyId
LEFT JOIN Occasion ON Occasion.UserId = Users.UserId
LEFT JOIN OccasionVaccine ON [b]Occasion[/b].OccasionId = OccasionVaccine.OccasionId
LEFT JOIN Vaccine ON Vaccine.VaccineId = OccasionVaccine.VaccineId
LEFT JOIN Signature ON Signature.SignatureId = Occasion.SignatureId
WHERE Users.CompanyId = 1
```

Du hade samma tabell på båda sidorna i villkoret.

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

## #4 — Percy, 2002-12-10T16:41Z

vad menar du med en subselect? alltså två helt sep. frågor?

jag väntar med spänning :-)

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

## #5 — Percy, 2002-12-10T16:54Z

tack LarsG, du är en hjälte!

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

## #6 — Percy, 2002-12-10T17:05Z

LarsG, har en följdfråga, handlar mer om asp, du kanske kan flytta tråden?

Undrar hur man får reslutatet av frågan att visas enligt följande mall:

Namn     VaccinA VaccinB VaccinC    Datum          Sign
Pierre        x                         x        2002-10-10     AF
                                 x                   2002-11-02      SD
Johan         x                                  2002-06-20       AF
osv.....

vill alltså att alla vaccinationer som har samma datum representeras av en rad, dvs ett vaccinationstillfälle,  och resp. vaccin som man fått med ett kryss. Personens namn skall endast synas en gång oberoende av antalet vaccinationstillfällen.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/61800-joina-tabeller
