---
title: "Distinct och join en gång för alla"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/96565-distinct-och-join-en-gång-för-alla"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Method"
published: "2004-02-04T14:55:15.000Z"
updated: "2004-02-04T18:59:09.000Z"
replies: 6
views: 263
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/96565-distinct-och-join-en-gång-för-alla"
---

# Distinct och join en gång för alla

## #1 — Method, 2004-02-04T14:55Z

jag vill hämta alla vinstnummer i tabellen tblWinningTicket och presentera vilket lotteri vinstnummret "tillhör" och även vilken användare som har vunnit på just det lottnummret

Men problemet är lottonummret visas 3 ggr även om det bara  ligger 1 post i tblWinningTicket.

har sökt på forumt och försökt att lösa det själv med group by, outer join men jag vet inte riktigt vad dom gör så vill gärna ha en förklaring till varför det blir som det blir så jag kan lära mig det och lösa liknande problem i framtiden

```
SELECT 

tblLottery.fld_lotID,
tblLottery.fld_lotDrawName,
tblLotRelation.fld_relLotID,
tblLotRelation.fld_relLotNumber,
tblLotRelation.fld_relUserID,
tblWinningTicket.fld_WtID,
tblWinningTicket.fld_WinTicketNumber,
tblWinningTicket.fld_LotteryID 

FROM ((tblLottery INNER JOIN tblLotRelation ON tblLottery.fld_lotID = tblLotRelation.fld_relLotID) 

INNER JOIN tblWinningTicket ON 
tblLotRelation.fld_relLotID = tblWinningTicket.fld_LotteryID) 

ORDER BY fld_WtID DESC"
```

I denna tabell ligger själva lotteriet
tblLottery.fld_lotID = Räknare
tblLottery.fld_lotDrawName = Text

I denna tabell sparas lottnummeren som en avändare köpt
tblLotRelation.fld_relLotID = Tal // Relationen till tblLottery
tblLotRelation.fld_relLotNumber = Tal
tblLotRelation.fld_relUserID = Tal

I denna tabell lägger man in vinstnumret och vilket lotteri det "tillhör" 
tblWinningTicket.fld_WtID = Räknare
tblWinningTicket.fld_WinTicketNumber = Tal
tblWinningTicket.fld_LotteryID = Tal // Relationen till tblLottery

Tack för alla svar

Jonas

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

## #2 — LarsG, 2004-02-04T15:40Z

Villkoret 

```
and tblLotRelation.fld_relLotNumber = tblWinningTicket.fld_WinTicketNumber
```

saknas.

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

## #3 — Method, 2004-02-04T16:21Z

Tack Lars, det funkar men jag var lite otydlig på vad jag ville  :r eller trött i huvudet.

men nu vet jag vad jag vill...

Nu presenteras bara vinnarnummren men jag vill kunna se alla vinstnummer som har lagts in även om det inte är någon vinnare och även att det ska stå att det inte är en vinnare.

Hoppas jag har gjort mig förstådd

Mvh

Jonas

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

## #4 — LarsG, 2004-02-04T16:50Z

```
SELECT 
tblLottery.fld_lotID,
tblLottery.fld_lotDrawName,
tblLotRelation.fld_relLotID,
tblLotRelation.fld_relLotNumber,
tblLotRelation.fld_relUserID,
tblWinningTicket.fld_WtID,
tblWinningTicket.fld_WinTicketNumber,
tblWinningTicket.fld_LotteryID 
FROM (tblLottery INNER JOIN tblWinningTicket 
ON tblLottery.fld_lotID = tblWinningTicket.fld_LotteryID) 
LEFT OUTER JOIN tblLotRelation 
ON  (tblWinningTicket.fld_LotteryID = tblLotRelation.fld_relLotID
and tblLotRelation.fld_relLotNumber = tblWinningTicket.fld_WinTicketNumber)
ORDER BY fld_WtID DESC
```

Om det är Access så får du kanske dona lite med parenteser.

Hur du gör när det inte finns någon vinnare beror på DBMS.

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

## #5 — Method, 2004-02-04T17:27Z

Funkar utmärkt :D men jag blir tokig på mig själv nu skulle jag lägga in en till användartabellen så man kan läsa ut användarnamnet, jag hade så det fungerade innan den senaste SQL jag fick av dig nu men nu kan jag inte implementera den i koden jag har provat allt (utom det rätta)

vart i sql ska denna in och vad ska den ha för () runt sig för att funka?

(jag kör access 2000)

INNER JOIN tblUsers ON tblLotRelation.fld_relUserID = tblUsers.fld_LoginID

tack på förhand

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

## #6 — LarsG, 2004-02-04T18:36Z

```
SELECT 
tblLottery.fld_lotID,
tblLottery.fld_lotDrawName,
nz(tblUsers.userName is null, 'Ingen vinnare') as Winner,
tblWinningTicket.fld_WtID,
tblWinningTicket.fld_WinTicketNumber,
tblWinningTicket.fld_LotteryID 
FROM ((tblLottery INNER JOIN tblWinningTicket 
ON tblLottery.fld_lotID = tblWinningTicket.fld_LotteryID) 
LEFT OUTER JOIN tblLotRelation 
ON  (tblWinningTicket.fld_LotteryID = tblLotRelation.fld_relLotID
and tblLotRelation.fld_relLotNumber = tblWinningTicket.fld_WinTicketNumber))
left outer JOIN tblUsers ON tblLotRelation.fld_relUserID = tblUsers.fld_LoginID
ORDER BY fld_WtID DESC
```

Jag lade till en översättning om det inte fanns någon vinnare.

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

## #7 — Method, 2004-02-04T18:59Z

Tusen tack

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/96565-distinct-och-join-en-gång-för-alla
