---
title: "joina 3 tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/163600-joina-3-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "WebbisNet"
published: "2007-08-18T20:37:46.000Z"
updated: "2007-08-20T20:34:14.000Z"
replies: 14
views: 674
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/163600-joina-3-tabeller"
---

# joina 3 tabeller

## #1 — WebbisNet, 2007-08-18T20:37Z

hur får jag denna sats att inkludera en tredje tabell som heter wfsubkategori, ska ha med kategoriID i tabellen sukategori i denna sats

```
Set RS=objConn.Execute("SELECT * FROM wfInlagg INNER JOIN wfKategori ON wfInlagg.inlaggKategori = wfKategori.kategoriID where inlaggKategori="& varKat)
```

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

## #2 — Peter S, 2007-08-19T08:26Z

```
SELECT
	*
FROM
	wfInlagg INNER JOIN wfKategori
	ON
	wfInlagg.inlaggKategori = wfKategori.kategoriID
		INNER JOIN wfsubkategori
		ON
		wfsubkategori.kategoriid = wfKategoriID
		
where
	inlaggKategori=" & varKat
```

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

## #3 — WebbisNet, 2007-08-19T13:25Z

> **Peter S skrev:**
>
> ```
> SELECT
> 	*
> FROM
> 	wfInlagg INNER JOIN wfKategori
> 	ON
> 	wfInlagg.inlaggKategori = wfKategori.kategoriID
> 		INNER JOIN wfsubkategori
> 		ON
> 		wfsubkategori.kategoriid = wfKategoriID
> 		
> where
> 	inlaggKategori=" & varKat
> ```

Expected ')'

/Forum/listaInlagg.asp, line 11

"wfInlagg.inlaggKategori = wfKategori.kategoriID INNER JOIN wfsubkategori ON &"\_

```
Set RS=objConn.Execute("SELECT * FROM wfInlagg INNER JOIN wfKategori ON &"_
	"wfInlagg.inlaggKategori = wfKategori.kategoriID INNER JOIN wfsubkategori ON &"_
	"wfsubkategori.kategoriid = wfKategoriID where &"_
	"inlaggKategori=" & varSub)
```

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

## #4 — Peter S, 2007-08-19T15:37Z

På tre ställen har du &-tecknet på fel sida av "-tecknet.

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

## #5 — WebbisNet, 2007-08-19T16:06Z

wfInlagg = kategori
wfKategori= kategoriID
wfSubkategori=kategoriID finns även subkategoriID här

\[MySQL\]\[ODBC 3.51 Driver\]\[mysqld-4.0.25-max\]Unknown column 'wfKategoriID' in 'on clause'

/Forum/listaInlagg.asp, line 10 

```
[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown column 'wfKategoriID' in 'on clause'

/Forum/listaInlagg.asp, line 10

Set RS=objConn.Execute("SELECT * FROM wfInlagg wfi INNER JOIN wfKategori wfk ON "&_
	"wfi.kategori = wfk.kategoriID INNER JOIN wfsubkategori ON "&_
	"wfsubkategori.kategoriid = wfKategoriID where "&_
	"wfk.kategori=" & varSub)
```

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

## #6 — Peter S, 2007-08-19T18:43Z

Felet beror som meddelandet antyder på att wfKategoriID inte finns i någon tabell. Vilken kolumn skall wfsubkategori.kategoriid matchas mot?

```
Set RS=objConn.Execute("SELECT * FROM wfInlagg wfi INNER JOIN wfKategori wfk ON "&_
	"wfi.kategori = wfk.kategoriID INNER JOIN wfsubkategori ON "&_
	"wfsubkategori.kategoriid = wfk.kategoriID where "&_
	"wfk.kategori=" & varSub)
```

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

## #7 — WebbisNet, 2007-08-19T22:03Z

Skriver om koden och nu har jag först detta problemet

```
Detta är huvudkategorierna wfCat
+----+-------------------+
| id | kategori          |
+----+-------------------+
|  1 | Bilar& Motorer    |
|  2 | Sex & Samlevnad   |
|  3 | Datorer & N&#1113828;tverk|
+----+-------------------+

Detta är underkategorierna wfSubCat
+----+---------+--------+---------------+
| id | mainCat | subCat | underkategori |
+----+---------+--------+---------------+
|  1 |       1 |      1 | Saab          |
|  2 |       1 |      2 | Volvo         |
|  3 |       1 |      3 | BMW           |
|  4 |       2 |      1 | St&#1113828;llningar  |
|  5 |       2 |      2 | Sexleksaker   |
|  6 |       2 |      3 | Porrsidor     |
|  7 |       3 |      1 | PC            |
|  8 |       3 |      2 | Mac           |
|  9 |       3 |      3 | Barebone      |
+----+---------+--------+---------------+

Hur får jag underkategorierna att listas efter rätt huvudkategori när jag klickar på respektive länk

Denna SQL är helt fel
c är variabeln för huvudkategorin, 1 2 eller 3
<%varC = Request.Querystring("c")
Set rs=objConn.Execute("SELECT * FROM wfSubCat INNER JOIN wfCat ON SubCat = SubCat where SubCat="& varC)
```

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

## #8 — doggelito, 2007-08-20T07:30Z

För att hämta alla underkategorier så behöver du inte joina i detta fall.
Däremot om du vill hämta alla huvudkategorier + vald huvudkategoris underkategorier så behöver du det.
Men då blir det lite mer avancerad sqlsats.

```
<%
     Dim varC, rs, objConn
     varC = Request.Querystring("c")

     Set rs = objConn.Execute("SELECT * FROM wfSubCat WHERE mainCat = " & varC)
%>
```

Eller föresten, om du t.ex. vill ha med huvudkategorins namn så kan du joina:

```
<%
     Dim varC, rs, objConn
     varC = Request.Querystring("c")

     Set rs = objConn.Execute("SELECT * FROM wfSubCat s INNER JOIN wfCat c ON s.mainCat = c.id WHERE c.id = " & varC)
%>
```

Dock när du joinar så bör du speca dina kolumner i selecten, annars får du dubletter av samma värden (ex. mainCat i wfSubCat och id i wfCat)

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

## #9 — WebbisNet, 2007-08-20T13:19Z

> **doggelito skrev:**
>
> För att hämta alla underkategorier så behöver du inte joina i detta fall.
> Däremot om du vill hämta alla huvudkategorier + vald huvudkategoris underkategorier så behöver du det.
> Men då blir det lite mer avancerad sqlsats.
>
>
> ```
> <%
>      Dim varC, rs, objConn
>      varC = Request.Querystring("c")
> 
>      Set rs = objConn.Execute("SELECT * FROM wfSubCat WHERE mainCat = " & varC)
> %>
> ```
>
> 
> Eller föresten, om du t.ex. vill ha med huvudkategorins namn så kan du joina:
>
>
> ```
> <%
>      Dim varC, rs, objConn
>      varC = Request.Querystring("c")
> 
>      Set rs = objConn.Execute("SELECT * FROM wfSubCat s INNER JOIN wfCat c ON s.mainCat = c.id WHERE c.id = " & varC)
> %>
> ```
>
> 
> Dock när du joinar så bör du speca dina kolumner i selecten, annars får du dubletter av samma värden (ex. mainCat i wfSubCat och id i wfCat)

är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller

```
set userRS=objConn.Execute("select userID, username, picture, uid from tblUsers INNER JOIN wfThreads on userID=uid")
```

Response.Write "&nbsp;\<strong class=""definition""\>Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"\</strong\>"

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

## #10 — doggelito, 2007-08-20T14:24Z

> **WebbisNet skrev:**
>
> är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller

Jepp, det är det. :)
Du har inte *inlaggDatum* med i selecten.
Sen är det bra att använda alias på tabellerna utifall samma kolumn finns i båda.

```
set userRS=objConn.Execute("SELECT u.userID, u.username, u.picture, t.inlaggDatum FROM tblUsers u INNER JOIN wfThreads t ON u.userID = t.uid")
```

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

## #11 — WebbisNet, 2007-08-20T14:40Z

> **doggelito skrev:**
>
> > **WebbisNet skrev:**
> >
> > är det nåt fel på den här satsen eftersom underföljande kolumner finns med i dessa tabeller
>
> Jepp, det är det. :)
> Du har inte *inlaggDatum* med i selecten.
> Sen är det bra att använda alias på tabellerna utifall samma kolumn finns i båda.
>
>
> ```
> set userRS=objConn.Execute("SELECT u.userID, u.username, u.picture, t.inlaggDatum FROM tblUsers u INNER JOIN wfThreads t ON u.userID = t.uid")
> ```

får bara 
error '80020009'

/Forum/read.asp, line 66 

även att den finns med i selecten

```
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
```

rad66 är
Response.Write "&nbsp;\<strong class=""definition""\>Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"\</strong\>"

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

## #12 — doggelito, 2007-08-20T18:03Z

Du har förmodligen råkat ut för EOF.

```
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")

If Not userRS.Eof Then
     Response.Write "&nbsp;<strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
End If

Set userRS = Nothing
```

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

## #13 — WebbisNet, 2007-08-20T18:52Z

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/Forum/read.asp, line 48 

rad 48 är fetmarkerad

```
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
[B]If Not userRS.Eof Then
     Response.Write "&nbsp;<strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"[/B]
End If
Do until userRS.eof
Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
userRS.movenext: Loop
Set userRS = Nothing
```

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

## #14 — Peter S, 2007-08-20T19:00Z

Ett par rader nedanför den fetmarkerade säger du userRS("inlaggRubrik"). Men i SQL-frågan hämtar du inte "inlaggRubrik".

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

## #15 — doggelito, 2007-08-20T20:34Z

> **WebbisNet skrev:**
>
> ```
> set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid from tblUsers INNER JOIN wfThreads on userID=uid")
> If Not userRS.Eof Then
>      Response.Write "&nbsp;<strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"
> End If
> Do until userRS.eof
> Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
> userRS.movenext: Loop
> Set userRS = Nothing
> ```

Här har du lite farlig kod igen. :)
Överallt där du skriver ut userRS(...) måste/bör du lägga innanför if-taggar för att kolla om userRS innehåller nånting. 

```
set userRS=objConn.Execute("select userID, username, picture, inlaggDatum, uid, inlaggRubrik from tblUsers INNER JOIN wfThreads on userID=uid")
If Not userRS.Eof Then
     Response.Write "&nbsp;<strong class=""definition"">Insänt av "& userRS("username") &" "& userRS("inlaggDatum") &"</strong>"

     Do until userRS.eof
          Response.Write "<a href="""& userRS("inlaggRubrik") &""">"& userRS("inlaggRubrik") &"</a>"
          userRS.movenext
     Loop
End If
Set userRS = Nothing
```

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

---

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