---
title: "Join i flera steg"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/141461-join-i-flera-steg"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "SannyW"
published: "2006-01-25T02:31:43.000Z"
updated: "2006-01-25T16:51:16.000Z"
replies: 8
views: 482
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/141461-join-i-flera-steg"
---

# Join i flera steg

## #1 — SannyW, 2006-01-25T02:31Z

Hej!

Får inte rätt på joins, försöker lägga till att id byts ut mot namn.

Har nedanstående kod:

```
SELECT t.t_name, m.m_datum, m.m_matchnr, m.m_hometeam, m.m_awayteam, "&_ 
m.m_homegoals, m.m_awaygoals, m.m_ot, l.l_season, l.l_name, m.m_omg "&_
FROM (tbl_league as l "&_
"INNER JOIN tbl_team as t ON l.l_teamID = t.t_teamID) " &_  
"INNER JOIN tbl_matches as m ON l.l_leagueID = m.m_leagueID " &_
"WHERE t.t_name = '"& strM &"' AND l.l_comp = '"& strC &"' "&_
" AND l.l_season = '"& strSeason &"' "&_
" ORDER BY m.m_leagueID, m.m_omg, m.m_datum, m.m_matchnr"
```

Försöker bygga till enligt nedanstående kod, men fattar inte riktigt hur och från vilket håll jag kan få in ytterligare en join.

```
"    from"&_
"        lag"&_
"        left join tbl_matches "&_
"        on t.ID = g.m_hometeam or t.ID = g.m_awayteam"&_
"    group by"&_
"        t.ID,t.lagNamn "&_
```

Hoppas någon förstår vad jag menar, tack på förhand.

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

## #2 — @nders, 2006-01-25T04:09Z

Läs: <http://www.webforum.nu/showthread.php?t=135903>

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

## #3 — SannyW, 2006-01-25T06:51Z

Okey, sorry.

Tack för ditt svar @nders, hoppas detta är lite mer utförligt och överskådligt.

\- Har precis gått över till att använda mysql som databas, MySQL 4.1-serien (loopia).

\- Befintlig SQL-fråga är enligt ovan, den fungerar men lagnamnen kommer fram som nummer då jag inte får rätt på länkningen t ex mellan tbl_matches.m_hometeam och tbl_lag.ID, som sedan skall skrivas ut som tbl_lag.lagNamn

\- Får inget felmeddelande, bara ett dåligt resultat. 

\- För att förklara min WHERE sats en aning så hämtas viss information med hjälp av Querystring som t ex default.asp?m=herrar&s=spelprogram&c=serie&y=2005/2006

Vilket då blir:
m=herrar hämtar från tbl_team.t_name (sektionsnamnet)
c=serie hämtar från tbl_league.l_comp (typ av tävling)
y=2005/2006 hämtar från tbl_league.l_season (aktuell säsong)

\- Har fyra tabeller:
tbl_lag (här finns olika föreningsnamn)
.ID
.lagNamn

tbl_league
.l_leagueID
.l_teamID
.l_comp
.l_name
.l_season

tbl_matches
.ID
.m_leagueID
.m_datum
.m_omg
.m_hometeam
.m_awayteam
.m_homegoals
.m_awaygoals
.m_ot

tbl_team (här finns de olika lagen inom föreningen)
.t_teamID
.t_name
.t_sektion

\- Förväntat resultat, något i denna stilen, vilket fungerar med den första koden. Men nu presenteras lagnamnen med en siffra istället.

2006-01-15 13:00	 	IBK Dalen	-	Södertälje IBK	4-4 SD

typ:

2006-01-15 13:00	 	25	          -	  3	              4-4 SD

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

## #4 — @nders, 2006-01-25T07:21Z

Det jag eftersökte var framförallt dbms, och en fin SQL-fråga. Släng bort allt junk från ASP / andra scriptspråk, så slipper man börja gråta när man försöker skaffa en översikt. =)

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

## #5 — SannyW, 2006-01-25T11:41Z

Då gör vi ett försök till, hoppas jag fått bort allt junk.

DRIVER={MySQL ODBC 3.51 Driver}

```
arrRecords = GetRows("SELECT t.t_name, m.m_datum, m.m_matchnr, m.m_hometeam, m.m_awayteam, m.m_homegoals, m.m_awaygoals, m.m_ot, l.l_season, l.l_name, m.m_omg 
FROM (tbl_league as l  
INNER JOIN tbl_team as t ON l.l_teamID = t.t_teamID)
INNER JOIN tbl_matches as m ON l.l_leagueID = m.m_leagueID 
ORDER BY m.m_leagueID, m.m_omg, m.m_datum, m.m_matchnr"
```

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

## #6 — SannyW, 2006-01-25T16:27Z

Blir inte klok på detta, nu har jag hamnat på sidorspår känns det som och försöker få in en replace. Nu skiftar den ut id mot Lagnamn, men den skriv ut dubbelrader och då blir t ex hometeam rätt medan awayteam blir fel.

typ:

5 - LAGNAMN(10)
LAGNAMN(5) - 10

Vilket då skulle blivit:
LAGNAMN(5) - LAGNAMN(10)

```
arrRecords = GetRows("SELECT 
t.t_name, 
m.m_datum, 
m.m_matchnr, 
m.m_hometeam, 
m.m_awayteam, 
m.m_homegoals, 
m.m_awaygoals, 
m.m_ot, 
l.l_season, 
l.l_name, 
m.m_omg, 
la.ID, 
la.lagNamn FROM (tbl_league as l
INNER JOIN tbl_team as t ON l.l_teamID = t.t_teamID) 
INNER JOIN tbl_matches as m ON l.l_leagueID = m.m_leagueID 
INNER JOIN tbl_lag as la ON la.ID = m.m_hometeam or la.ID = m.m_awayteam
WHERE t.t_name = '"& strM &"' AND l.l_comp = '"& strC &"' AND l.l_season = '"& strSeason &"'
ORDER BY m.m_leagueID, m.m_omg, m.m_datum, m.m_matchnr")

'// Posthantering 
If IsArray(arrRecords) then

 	For i = 0 To Ubound(arrRecords,2)

	strName = arrRecords(0,i)	
	strDatum = arrRecords(1,i)	
	strMatchnr = arrRecords(2,i)	
	strHometeam = arrRecords(3,i)
	strAwayteam = arrRecords(4,i)	
	strHomegoals = arrRecords(5,i)	
	strAwaygoals = arrRecords(6,i)	
	strOT = arrRecords(7,i)	
	strSeason = arrRecords(8,i)	
	strDivision = arrRecords(9,i)
	strOmg = arrRecords(10,i)
	strLaID = arrRecords(11,i)	
	strLaName = arrRecords(12,i)

	strHometeam = Replace(strHometeam, strLaID, strLaName) 
	strAwayteam = Replace(strAwayteam, strLaID, strLaName)
```

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

## #7 — SannyW, 2006-01-25T16:44Z

Hittade en lösning så här, men det var inte den vackraste jag har skådat. Känns som jag snurrar mer än vad jag behöver.

```
arrRecords = GetRows("SELECT t.t_name, m.m_datum, m.m_matchnr, m.m_hometeam, m.m_awayteam, m.m_homegoals, m.m_awaygoals, m.m_ot, l.l_season, l.l_name, m.m_omg, la1.ID, la1.lagNamn, la2.ID, la2.lagNamn FROM (tbl_league as l  "&_
  "INNER JOIN tbl_team as t ON l.l_teamID = t.t_teamID) " &_
  "INNER JOIN tbl_matches as m ON l.l_leagueID = m.m_leagueID " &_
  "INNER JOIN tbl_lag as la1 ON la1.ID = m.m_hometeam " &_
  "INNER JOIN tbl_lag as la2 ON la2.ID = m.m_awayteam " &_
  " WHERE t.t_name = '"& strM &"' AND l.l_comp = '"& strC &"' AND l.l_season = '"& strSeason &"' "&_
  "ORDER BY m.m_leagueID, m.m_omg, m.m_datum, m.m_matchnr")

'// Posthantering 
If IsArray(arrRecords) then

 	For i = 0 To Ubound(arrRecords,2)

	strName = arrRecords(0,i)	
	strDatum = arrRecords(1,i)	
	strMatchnr = arrRecords(2,i)	
	strHometeam = arrRecords(3,i)
	strAwayteam = arrRecords(4,i)	
	strHomegoals = arrRecords(5,i)	
	strAwaygoals = arrRecords(6,i)	
	strOT = arrRecords(7,i)	
	strSeason = arrRecords(8,i)	
	strDivision = arrRecords(9,i)
	strOmg = arrRecords(10,i)
	strLa1ID = arrRecords(11,i)
	strLa1Namn = arrRecords(12,i)
	strLa2ID = arrRecords(13,i)
	strLa2Namn = arrRecords(14,i)

	strHometeam = Replace(strHometeam, strLa1ID, strLa1Namn) 
	strAwayteam = Replace(strAwayteam, strLa2ID, strLa2Namn)
```

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

## #8 — LarsG, 2006-01-25T16:44Z

Du behöver två instanser av lagtabellen.

```
SELECT 
t.t_name, 
m.m_datum, 
m.m_matchnr, 
m.m_hometeam, 
m.m_awayteam, 
m.m_homegoals, 
m.m_awaygoals, 
m.m_ot, 
l.l_season, 
l.l_name, 
l.l_seasone,
l.l_name,
m.m_omg, 
la.ID, 
la1.lagNamn ,
la2.lagNamn
FROM  tbl_league as l
INNER JOIN tbl_team as t ON l.l_teamID = t.t_teamID
INNER JOIN tbl_matches as m ON l.l_leagueID = m.m_leagueID 
INNER JOIN tbl_lag as la1 ON la1.ID = m.m_hometeam 
INNER JOIN tbl_lag as la2 on la2.ID = m.m_awayteam
WHERE t.t_name = '"& strM &"' AND l.l_comp = '"& strC &"' AND l.l_season = '"& strSeason &"'
ORDER BY m.m_leagueID, m.m_omg, m.m_datum, m.m_matchnr
```

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

## #9 — SannyW, 2006-01-25T16:51Z

Tack LarsG! Då vandrade jag på den rätta vägen...

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/141461-join-i-flera-steg
