---
title: "Få ut data ur två tabeller?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/60906-få-ut-data-ur-två-tabeller"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Sammy"
published: "2002-12-02T17:03:03.000Z"
updated: "2002-12-03T19:55:39.000Z"
replies: 25
views: 558
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/asp/60906-få-ut-data-ur-två-tabeller"
---

# Få ut data ur två tabeller?

_Sida 1 av 2._

## #1 — Sammy, 2002-12-02T17:03Z

Jag sitter här med min första webb-butik och vill nu försöka få ut en bild (färgad fyrkant) framför namnet på den kund i mitt kundregister som har gjort en order. Nu undrar hur jag ska gå tillväga för att få den funktionen visad?

Här är koden som visar kundregistret:

```
         <%
          Set Connect = Server.CreateObject("ADODB.Connection")
          MdbFilePath = Server.MapPath("data/db.mdb")
          Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

          Set RStemp = Connect.Execute("Select * From KONTO Order by FORNAMN, EFTERNAMN, USER")
         %>

         <CENTER>
         <TABLE width="100%" border="0" cellspacing="0" cellpadding="2">
         <%
          Do Until RStemp.EOF
          cnt = cnt + 1
          strColor = "#F5F5F5" 
          If cnt Mod 2 = 0 then strColor = "#FFFFFF"
          Response.Write "<tr bgcolor='" & strColor & "' onMouseOver=this.style.backgroundColor='#c5dbff'; onMouseOut=this.style.backgroundColor='';>" &_
          "<td width=80 class=text>&nbsp;" & RStemp("FORNAMN") & "</td>" &_
          "<td width=100 class=text>&nbsp;" & RStemp("EFTERNAMN") &"</td>"
         %>

         <%
          If IsNull(RStemp("EPOST")) then
           Response.Write "<td class=text1>&nbsp;</td>"
          Else
           Response.Write "<td width=20 class=text align=left>&nbsp;<A href=mailto:" & RStemp("EPOST") & "><IMG src=""bilder/email.gif"" border=0 width=12 height=10></A>&nbsp;</td>"
          End If
         %>
         
         <%
          Response.Write "<td width=70 class=text align=left>&nbsp;" & RStemp("USER") & "&nbsp;</td>" &_
          "<td class=text align=right><i>&nbsp;" & RStemp("DATUM") &"&nbsp;</td></tr>" &_
          RStemp.MoveNext
          Loop
 
          Connect.close
          Set Connect = nothing
 
         %>
         </TABLE>
```

Nu vill jag alltså att bilden (fyrkanten) ska visas om kunden har en order liggandes från tabellen ORDER.

Tacksam för svar...

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

## #2 — Jesper T, 2002-12-02T17:10Z

1\. Byt namn på tabellen "Order", det kommer att skapa oreda eftersom att det är ett öronmärkt namn.
2\. SQL-en kanske kan se ut så här:

```
 Set RStemp = Connect.Execute("Select k.*,o.Orderkolumn From KONTO k, [ORDER] o Order by k.FORNAMN, k.EFTERNAMN, k.USER")
```

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

## #3 — Sammy, 2002-12-02T17:13Z

Vad exakt gör den SQL-satsen?

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

## #4 — Jesper T, 2002-12-02T17:13Z

Med en if-sats:

```
if len(RStemp("orderkolumn"))>0 then
' visa bild
end if
```

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

## #5 — Jesper T, 2002-12-02T17:14Z

> **Sammy skrev:**
>
> Vad exakt gör den SQL-satsen?

Hämtar ifrån två tabeller...förhoppningsvis.

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

## #6 — Jesper T, 2002-12-02T17:23Z

```
Set RStemp = Connect.Execute("Select [red]k.* [/red],[blue]o.Orderkolumn[/BLUE] From [red]KONTO k[/red],[blue] [ORDER] o [/blue]Order by [red]k.FORNAMN, k.EFTERNAMN, k.USER[/red]")
```

 

Röd = tabellen "Konto" 
Blå = tabellen "Order" 

bokstäverna framför kolumnnamnen är för att hålla reda på vilken kolumn som tillhör vilken tabell.
Ex select k.kontokolumn From Kontotabell k

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

## #7 — Sammy, 2002-12-02T17:30Z

Tack jesper.. förstår den principen nu..

När jag använde din IF sats sedan (valde att visa ett T för att göra det enkelt så länge) så blev resultat att T'et visades på alla även fast det bara är en order gjord för användare 1?

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

## #8 — Sammy, 2002-12-02T17:33Z

Btw.. det ska möjligtvis inte vara typ: (I SQL'en)

where anv = anv i båda tabellerna.. du förstår säkert vad jag menar ;)

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

## #9 — Jesper T, 2002-12-02T17:34Z

Så här då:

```
if len(RStemp("orderkolumn"))>0 then
response.write "T"
Else 
response.write ""
end if
```

Tänk på att detta måste vara i loopen.

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

## #10 — Jesper T, 2002-12-02T17:36Z

Jo, kanske det förståss:
Set RStemp = Connect.Execute("Select k.\* ,o.Orderkolumn From KONTO k, \[ORDER\] o Where o.user = k.User Order by k.FORNAMN, k.EFTERNAMN, k.USER")

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

## #11 — Sammy, 2002-12-02T17:45Z

Det här var klurigt värre...

nu fick jag felmeddelandet:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Typblandningsfel i uttryck.
kundregister.asp, line 30

och det är SQL raden det

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

## #12 — LarsG, 2002-12-02T17:47Z

Njae, då kommer enbart de kunder som har en order med. Om samma kund har flera order så kommer den kunden flera gånger i resultatet också.

```
set rstemp = "select k.*,(select count(*) " & _
" from orders where user = k.user) as antalOrder " & _
" from konto "
'
'
'
if rstemp("antalOrder") > 0 then 
'har order
else
'har inte order
end if
```

Du har väl bytt namn på tabellen order? Jag gissar lite på övriga kolumnnamn så du får ändra så att  det stämmer.

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

## #13 — Sammy, 2002-12-02T17:58Z

Jadå.. bytte namn på den till ORDERS som du använda dig av..

Hmm.. får nu felmeddelandet:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Det går inte att identifiera 'k.\*' som ett giltigt fältnamn eller uttryck i Microsoft Jet.

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

## #14 — LarsG, 2002-12-02T18:02Z

Skärpning (det gäller mig alltså).

```
set rstemp = "select k.*,(select count(*) " & _
" from orders where user = k.user) as antalOrder " & _
" from konto k"
```

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

## #15 — Sammy, 2002-12-02T18:12Z

Jag kanske ska tillägga att jag INTE gjort databasen ORDERS som du tänker utan där lagras alla artiklar tillsammans med den inloggades IDNR.

i tabellen orders kan det se ut så här:

IDNR , ARTIKEL, KATEGORI, PRIS

IDNR är användarens IDNR alltså.. sedan när en kund lägger till en order så läggs den ordern på samma order ;) kan man säga så ;)

Ska väl säga att detta är den första butiken jag gör och jag har egentligen ingen aning om hur man ska göra, men så här långt fungerar den som jag tänkt mig ;)

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

## #16 — Sammy, 2002-12-02T18:13Z

så att plocka ut olika antal ordrar går nog inte i det här fallet...

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

## #17 — Sammy, 2002-12-02T18:23Z

Border inte detta fungera?

```
Set RStemp = Connect.Execute("Select k.* ,o.* From KONTO k, ORDERS o Where o.user = k.idnr Order by k.FORNAMN, k.EFTERNAMN, k.USER")
```

tillsammans med

```
if len(RStemp("user"))>0 then
response.write "T"
Else 
response.write "Y"
end if
```

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

## #18 — Sammy, 2002-12-03T16:03Z

Ska jag behöva ta om frågan eller är detta för invecklat att göra? (kanske inte jag som förstår?)

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

## #19 — LarsG, 2002-12-03T16:09Z

Nej, du måste ha en outer join eller använda den fråga som jag skrev tidigare.

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

## #20 — Sammy, 2002-12-03T16:38Z

Jo, men det är fel på det eftersom jag får felmeddelandet: (den tidigare du skrev)

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: '\[string: "select k.\*,(select c"\]'

testade även att

lägga till detta:

         set rstemp = Connect.Execute("select k.\*,(select count(\*) from orders where userid = k.idnr) as antalOrder from konto k Order by k.FORNAMN, k.EFTERNAMN, k.USER" )

men då får jag felmeddelandet:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Typblandningsfel i villkorsuttryck.

Och sedan så är det egentligen INTE antal ordrar som regisistreras i tabellen ORDERS utan det är antal artiklar med referenser till ANVÄNDARID/MEDLEMSID (kan se ut så här)

USERID_____________ARTIKEL_____________KATEGORI___________PRIS
1                             TV                            TV/VIDEO                 300
2                             KÖTTBULLE                MAT                         2
1                             HÖRNSOFFA               MÖBEL                     1300

så även om en medlem/kund gjort flera beställningar så har det ingen betydelse.. vill bara veta om den personen har gjort en beställning/order

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/60906-få-ut-data-ur-två-tabeller  
Nästa sida: https://www.webforum.nu/amne/asp/60906-få-ut-data-ur-två-tabeller/page2.md
