---
title: "namn från flera tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21667-namn-från-flera-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "icaaq"
published: "2001-10-01T08:41:00.000Z"
updated: "2001-10-10T16:39:00.000Z"
replies: 23
views: 262
page: 1
pages: 2
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/21667-namn-från-flera-tabeller"
---

# namn från flera tabeller

_Sida 1 av 2._

## #1 — icaaq, 2001-10-01T08:41Z

Jag har följande:

```
T_RF
T_FB
T_FORENING
```

i dessa vill jag ta ut dessa tre fält:

```
F_RF_NAMN
F_FB_NAMN
F_FOR_NAMN
```

och lägga alla namn i ett recordset. Det jag kommer att gå efter är

```
F_USER_ID
```

som finns i alla tabellerna. Det kommer väl bli nån sorts join (tror jag) men hur gör man ????

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

## #2 — LarsG, 2001-10-01T08:45Z

```
select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN
  from T_RF,T_FB,T_FORENING
 where T_RF.F_USER_ID = T_FB.F_USER_ID
   and T_FB.F_USER_ID = T_FORENING.F_USER_ID
```

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

## #3 — icaaq, 2001-10-01T08:54Z

Jag har alltså F_USER_ID i variabel på sidan 

```
intID
```

 förstår du ;)

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

## #4 — LarsG, 2001-10-01T08:57Z

Kanske det.

```
sql = "select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN
from T_RF,T_FB,T_FORENING
where T_RF.F_USER_ID = T_FB.F_USER_ID
and T_FB.F_USER_ID = T_FORENING.F_USER_ID
and T_FORENING.F_USER_ID = " & intID
```

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

## #5 — icaaq, 2001-10-01T09:03Z

Men hur gör jag När jag ska skriva ut alla dessa:

```
sql = "select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN
from T_RF,T_FB,T_FORENING
where T_RF.F_USER_ID = T_FB.F_USER_ID
and T_FB.F_USER_ID = T_FORENING.F_USER_ID
and T_FORENING.F_USER_ID = " & intID
Set ObjRS = ObjConn.Execute(sql)
If objRS.EOF Then
'lala
Else
Response.Write"<select name=""Namn"" tabindex=""1"" >" &vbCrLf
						Response.Write"<option style=""background: #FFCC99; color: #000000"">Välj din styrelse</option>" &vbCrLf
						Do Until ObjRS.EOF
						Response.Write"<option style=""background: #FFCC99; color: #000000"">"&[b]ObjRS("F_LAG_NAMN")[/b]&"</option>" &vbCrLf
						ObjRS.Movenext
						Loop
'och så stänger vi
```

hur ska jag göra vi den feta texten ....?
Kan jag skriva ObjRS(0) ??
Eller ska man döpa selecten med AS ?

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

## #6 — LarsG, 2001-10-01T09:11Z

Varifrån kommer F_LAG_NAMN?

Du kan använda rs(0) et.c. om du vill. Det är lite vanskligt att använda då det kan orsaka fel om man ändrar på sin select-sats.

Att kolumnerna ligger i olika tabeller har ingen betydelse när man refererar namnen i ADO. Det är kolumnnamnet som man använder. 

Att använda AS är användbart om man har samma kolumnnamn i olika tabeller eller om man har ett uttryck i select-listan.

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

## #7 — icaaq, 2001-10-01T09:54Z

:(

```
Microsoft JET Database Engine error '80040e14' 

Syntaxfel i FROM-instruktion. 

/Medimatch2/add.asp, line 1219 [b]= execute.raden[/b]
```

 :q

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

## #8 — icaaq, 2001-10-01T10:17Z

Jag fick till det....men inte riktigt :(

detta kommer vid Response.Write:

```
select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN from T_RF,T_FB,T_FORENING where T_RF.F_USER_ID = T_FB.F_USER_ID and T_FB.F_USER_ID = T_FORENING.F_USER_ID and T_FORENING.F_USER_ID = 1
```

men vad jag får ut är bara posterna jag har i T_RF (Det är två stycken), och dem kommer så här:

```
Sverges innebandy förbund
Sverges innebandy förbund
Sverges innebandy förbund
Sverges innebandy förbund
Sveriges Ishockey förbund
Sveriges Ishockey förbund
Sveriges Ishockey förbund
Sveriges Ishockey förbund
```

nått som är vaijsing :l

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

## #9 — LarsG, 2001-10-01T11:50Z

Nja, det är inte så konstigt. Om du joinar två tabeller så får du ju alla kombinationer där det finns en match enligt villkoret.

T.ex.

Om A innehåller

ID!A_DATA
\-------
1!A
2!B

och B innehåller

ID!B_DATA
\--------
1!A
1!B
1!C
2!D
3!E

och om du kör frågan

```
select * from a,b where a.id = b.id
```

så får du 4 poster

ID!ID!A_DATA!B_DATA
\-------------------
1!1!A!A
1!1!A!B
1!1!A!C
2!2!B!D

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

## #10 — icaaq, 2001-10-01T14:25Z

ok.... :l

men hur fixar jag till detta da, får jag lov att använda outer eller inner join för att få ut alla namn(endast en gång..

tacksam för hjälp ;)

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

## #11 — LarsG, 2001-10-01T15:37Z

Om du använder outer eller inner join har ingen betydelse i detta sammanhang. (Det du använder nu är en inner join.)

Det man kan göra är att i presentationen hålla reda på när någon kolumn byter värde och bara i dessa fall skriva ut innehållet

```
sql = _
"select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN from T_RF,T_FB,T_FORENING where T_RF.F_USER_ID = T_FB.F_USER_ID and T_FB.F_USER_ID = T_FORENING.F_USER_ID and T_FORENING.F_USER_ID = 1 order by F_RF_NAMN "
set rs = connect.execute(sql)
f_rf_namm = ""
while not rs.eof
  if f_rf_namn <> rs("f_rf_namn") then
     f_rf_namn = rs("(f_rf_namn")
'skriv ut f_rf_namn
  end if
'skriv ut övriga kolumner
  rs.movenext
wend
```

Nu vet jag inte om det stämmer med dina kolumnnamn men principen är densamma.

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

## #12 — icaaq, 2001-10-01T18:56Z

Nu har jag så här:

```
sql = "select F_RF_NAMN,F_FB_NAMN,F_FOR_NAMN from T_RF,T_FB,T_FORENING where T_RF.F_USER_ID = T_FB.F_USER_ID and T_FB.F_USER_ID = T_FORENING.F_USER_ID and T_FORENING.F_USER_ID = "& strMMID&" order by F_RF_NAMN "
		Response.Write sql
		Set ObjRS1 = ObjConn.execute(sql)
		If ObjRS1.EOF Then
		Response.Write "Du måste lägga in nått där du kan vara styrelsemedlem först"
		Else
Response.Write"<select name=""lag"" tabindex=""1"" >" &vbCrLf
						Response.Write"<option style=""background: #FFCC99; color: #000000"">Välj ditt lag</option>" &vbCrLf
						strRfNamn = ""
						strFbNamn = ""
						strForNamn = ""
						While Not ObjRS1.EOF
						If strRfNamn <> ObjRS1("F_RF_NAMN") Then
						strRfNamn = ObjRS1("F_RF_NAMN")
						Response.Write"<option style=""background: #FFCC99; color: #000000"">"&strRfNamn&"</option>" &vbCrLf
						End If
						If strFbNamn <> ObjRS1("F_FB_NAMN") Then
						strFbNamn = ObjRS1("F_FB_NAMN")
						Response.Write"<option style=""background: #FFCC99; color: #000000"">"&strFbNamn&"</option>" &vbCrLf
						End If
						If strForNamn <> ObjRS1("F_FOR_NAMN") Then
						strForNamn = ObjRS1("F_FOR_NAMN")
						Response.Write"<option style=""background: #FFCC99; color: #000000"">"&strForNamn&"</option>" &vbCrLf
						End If
						ObjRS1.Movenext
						Wend
'stänger och går hem
```

men jag får ut dem i denna ordning

```
<select name="lag" tabindex="1" >
<option style="background: #FFCC99; color: #000000">Välj ditt lag</option>
<option style="background: #FFCC99; color: #000000">Sverges innebandy förbund</option>
<option style="background: #FFCC99; color: #000000">Dalarnas ishockey förbund</option>
<option style="background: #FFCC99; color: #000000">KAIS</option>
<option style="background: #FFCC99; color: #000000">Mora IBF</option>
<option style="background: #FFCC99; color: #000000">dalarnas pingis förbund</option>
<option style="background: #FFCC99; color: #000000">KAIS</option>
<option style="background: #FFCC99; color: #000000">Mora IBF</option>
<option style="background: #FFCC99; color: #000000">Sveriges Ishockey förbund</option>
<option style="background: #FFCC99; color: #000000">Dalarnas ishockey förbund</option>
<option style="background: #FFCC99; color: #000000">KAIS</option>
<option style="background: #FFCC99; color: #000000">Mora IBF</option>
<option style="background: #FFCC99; color: #000000">dalarnas pingis förbund</option>
<option style="background: #FFCC99; color: #000000">KAIS</option>
<option style="background: #FFCC99; color: #000000">Mora IBF</option>
</select>
```

inte precis som jag tänkt mig... :l

Går det att fixa så att de kommer i fallande ordning från RF--\>FB--\>Forening

Som ni ser har RF bara kommit med två ggr :) men FB och Forening kommit med flera ggr :(

vad/hur ska jag göra :q

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

## #13 — LarsG, 2001-10-01T19:37Z

Jag har nog kommit fram till att du inte behöver en join utan en union

```
sql = "select F_RF_NAMN as NAMN from T_RF " & _
" where F_USER_ID = " & strMMID & _
"union select F_FB_NAMN from T_FB " & _
" where F_USER_ID = " & strMMID & _
"union select F_FOR_NAMN from T_FORENING " & _
" where F_USER_ID = " & strMMID & _
" order by 1"

Response.Write sql
Set ObjRS1 = ObjConn.execute(sql)
If ObjRS1.EOF Then
Response.Write "Du måste lägga in nått där du kan vara styrelsemedlem först"
Else
Response.Write"<select name=""lag"" tabindex=""1"" >" &vbCrLf
Response.Write"<option style=""background: #FFCC99; color: #000000"">Välj ditt lag</option>" &vbCrLf
While Not ObjRS1.EOF
Response.Write"<option style=""background: #FFCC99; color: #000000"">"& objRS1("NAMN")&"</option>" &vbCrLf

ObjRS1.Movenext
Wend
'stänger och går hem
```

Union innebär att man slår ihop resultatet av två eller flera frågor och samtidigt tar bort alla duplikat.

Ursäkta att jag ledde dig lite på villospår där, förhoppningsviss så har du i alla fall lärt dig något.

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

## #14 — icaaq, 2001-10-01T19:47Z

> Union innebär att man slår ihop resultatet av två eller flera frågor och samtidigt tar bort alla duplikat.

precis så vill jag ha det :e

**Men**, detta kommer upp :(

```
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'F_USER_ID = 1union select F_FB_NAMN from T_FB where F_USER_ID = 1union select F_FOR_NAMN from T_FORENING where F_USER_ID = 1'.
```

eftersom jag aldrig gjort nåt sånt här kan jag inte testa mig fram (vågar inte än).... så det finns bara ett sätt att lösa det på ....

**slänga upp det på wF**

PS. Jag har lärt mig en del i dag iaf ;) DS

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

## #15 — LarsG, 2001-10-01T19:52Z

```
sql = "select F_RF_NAMN as NAMN from T_RF " & _
" where F_USER_ID = " & strMMID & _
" union select F_FB_NAMN from T_FB " & _
" where F_USER_ID = " & strMMID & _
" union select F_FOR_NAMN from T_FORENING " & _
" where F_USER_ID = " & strMMID & _
" order by 1"
```

Missade blank framför union

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

## #16 — icaaq, 2001-10-01T20:27Z

:e

Nu funkar det som FAN ;)

Bara en sak till, går det att göra så att den sorterar efter
RF--\>FB--\>Förening :q

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

## #17 — LarsG, 2001-10-01T20:29Z

Ja.

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

## #18 — icaaq, 2001-10-01T20:30Z

va bra ;)

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

## #19 — LarsG, 2001-10-01T20:31Z

Så här kan man göra det.

```
sql = "select F_RF_NAMN as NAMN,1 from T_RF " & _
" where F_USER_ID = " & strMMID & _
" union select F_FB_NAMN,2 from T_FB " & _
" where F_USER_ID = " & strMMID & _
" union select F_FOR_NAMN,3 from T_FORENING " & _
" where F_USER_ID = " & strMMID & _
" order by 2,1"
```

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

## #20 — icaaq, 2001-10-01T20:39Z

:e :e :e :e :e :e 

Så glad är jag nu. Bara för att försökra er hur glad jag är så:
 :e :e :e :e :e :e 

Tack LarsG 

Jag kommer tillbaks imorrn ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21667-namn-från-flera-tabeller  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/21667-namn-från-flera-tabeller/page2.md
