---
title: "Sökning i flera tabeller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21411-sökning-i-flera-tabeller"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "H_E_Pennypacker"
published: "2001-04-03T18:49:00.000Z"
updated: "2001-04-08T08:57:00.000Z"
replies: 21
views: 325
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/21411-sökning-i-flera-tabeller"
---

# Sökning i flera tabeller

_Sida 1 av 2._

## #1 — H_E_Pennypacker, 2001-04-03T18:49Z

Jag gör en söksida där jag vill att sökningen ska gå igenom flera databaser

Hur gör jag för att jag ska kunna läsa in flera tabeller? exempelvis:
ID, Namn, bild från tabell 1, tabell 2, tabell 3

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

## #2 — @nders, 2001-04-03T19:05Z

hello, und willkommen auf wF (kan inte tyska, men det får duga ;) )

databasmotor? access? sql server?
hur ser relationerna ut?
menar du flera databaser som du skrev först, eller flera tabeller som du skrev sen?

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

## #3 — H_E_Pennypacker, 2001-04-04T06:54Z

Ja du, det kanske är svårt att lösa när man inte får tillräcklig information, jag är nybörjare inom området, men då ska vi se:
Det är 1 databas men i den flera tabeller. Databasen är gjord i Access. Jag jobbar i Dreamweaver Ultradev 4, och när jag skriver följande
SELECT \* FROM tabell1, tabell2
Så får jag fram 10 st av varje rad i tabell1 men ingen från tabell2.
Tabellerna ser också något olika ut, har lite olika fält.
Ex. Tabell1               Tabell2
    \--------              --------
    ID                    ID
    Namn                  Namn
    Bild                  Bild
    Smak                  Färg
 
Vet inte om detta var till någon mer hjälp?

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

## #4 — H_E_Pennypacker, 2001-04-04T06:56Z

Det vart lite kluddigt men

Tabell1 innehåller fälten
ID, Namn, Bild, Smak

Medans Tabell2 innehåller fälten
ID, Namn, Bild, Färg

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

## #5 — @nders, 2001-04-04T07:07Z

ok, det handlar alltså inte om en join, du har inga relationer mellan tabellerna, utan du vill bara få ut allt från tabell1 och allt från tabell2?

prova en liten union, kanske?

```
select * from Tabell1
union
select * from Tabell2
```

nånting sånt borde funka...

mvh,

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

## #6 — H_E_Pennypacker, 2001-04-04T16:32Z

Provade med koden:

```
select * from ol
union
select * from snaps
```

 

Men fick felmeddelandet:

\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Antalet kolumner i tabellerna eller frågorna i unionsfrågan stämmer inte överens.

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

## #7 — LarsG, 2001-04-04T16:37Z

Jo, så är det här i livet. När man använder union så måste vara lika många kolumner i select-listorna och så måste typerna vara samma (eller åtminstone jämförbara).
Du kan ju lägga till några dummyvärden i den ena select-listan så att det stämmer.

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

## #8 — H_E_Pennypacker, 2001-04-04T21:15Z

du menar i databasen eller i sql strängen, om senare isåfall hur?

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

## #9 — LarsG, 2001-04-04T21:24Z

Jag menar i sql-strängen.
Antag att t1 har kolumnerna

c1 int
c2 char
c3 int
c4 char

och att t2 har kolumnerna 

c1 int
c2 char

då kan man skriva en union så här

```
  select c1,c2,c3,c4 from t1
  union
  select c1,c2,0,'' from t2
```

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

## #10 — H_E_Pennypacker, 2001-04-05T10:45Z

som sagt jag är inget vidare vettigt bra på detta (men det är väl bla därför såna här forum finns)

Behöver egentligen inte ta ut all information ur tabellerna (\*), det räcker med ett antal rader som jag vet finns i båda tabellerna, men med denna kod:

```
select ID, Namn, Bild, Betyg, Producent from ol
union
select ID, Namn, Bild, Betyg, Producent from snaps
```

Får jag felmeddelandet:
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] För få parametrar angavs. 1 förväntades.

Hur ser jag om kolumnerna är INT eller CHAR?

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

## #11 — @nders, 2001-04-05T10:50Z

hej!

det känns som att 'namn' är ett reserverat ord, som skapar felmeddelandet du får.

du måste nog faktiskt klamra dina kolumner om du ska använda reserverade ord som fältnamn.

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

## #12 — H_E_Pennypacker, 2001-04-05T10:52Z

@nders

skulle du bara kunna förklara klamra

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

## #13 — @nders, 2001-04-05T10:55Z

klamra - specificera fältnamnen inom hakparenteser.

select \[namn\], \[select\] from tblBah

typ.

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

## #14 — H_E_Pennypacker, 2001-04-05T11:01Z

tack

Men upptäckte var felet låg. Lite pinsamt men jag hade döpt om ett av fältnamnen när jag testade. Ändrade tillbaka och allt fungerade.
Då kommer tyvärr nästa problem

Alla sökresultat som kommer ifrån tabellen snaps ska länkas till /snaps.asp?ID=
medan allt från tabellen ol ska länkas till /ol.asp?ID=

Svårlöst? eller ska jag bara lägga ner?

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

## #15 — @nders, 2001-04-05T11:08Z

lägga ner?

inte då! ;)

men då måste vi ju veta varifrån värdena kommer.

```
select kol1, kol2, kol3, 'snaps' as typ from snaps
select  kol1, kol2, kol3, 'ol' as typ from ol
```

borde göra tricket. nu har du ett fält i ditt resultset som heter typ, som innehåller antingen 'snaps' eller 'ol'.

när du drar ut din loop så länkar du bara till \<%=objRS("typ")%\>.asp?id=\<%=objRS("ID")%\>

mvh,

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

## #16 — H_E_Pennypacker, 2001-04-05T12:52Z

det börjar ta sig, men lite nya problem, säkert enkla att lösa, den ska ju sortera ut efter sökningen
Jag kodade följande

```
SELECT ID, Namn, Betyg, Bild, Producent, 'snaps' as typ from snaps  union  select ID, Namn, Betyg, Bildliten, Producent, 'ol' as typ
FROM ol
WHERE Namn like Request.Form('"sok"')
ORDER BY Namn
```

Fungerade inte riktigt:
Odefinerad funktion "Request.Form" i uttryck.

Nåt förslag?

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

## #17 — @nders, 2001-04-05T12:59Z

använder du asp för detta?

kan man få se på den asp-kod som skapar frågan ovan, så ska vi kunna hjälpa dig.

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

## #18 — H_E_Pennypacker, 2001-04-05T13:04Z

kör ultradev 4
men koden ser ut som följer (hoppas det var den här du ville ha)

```
<%
set ta_ut_allt = Server.CreateObject("ADODB.Recordset")
ta_ut_allt.ActiveConnection = MM_Barbarnes_test_STRING
ta_ut_allt.Source = "SELECT ID, Namn, Betyg, Bild, Producent, 'snaps' as typ from snaps  union  select ID, Namn, Betyg, Bildliten, Producent, 'ol' as typ  FROM ol  WHERE Namn like Request.Form('"sok"')  ORDER BY Namn"
ta_ut_allt.CursorType = 0
ta_ut_allt.CursorLocation = 2
ta_ut_allt.LockType = 3
ta_ut_allt.Open()
ta_ut_allt_numRows = 0
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="
MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone=""

' add the Form variables to the MM_keepForm string
For Each Item In Request.Form
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
if (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
if (MM_keepURL <> "")  Then MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
if (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>
```

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

## #19 — @nders, 2001-04-05T13:39Z

jepps.

det är i första stycket du ska ändra lite.

```
<%
set ta_ut_allt = Server.CreateObject("ADODB.Recordset")
ta_ut_allt.ActiveConnection = MM_Barbarnes_test_STRING
ta_ut_allt.Source = "SELECT ID, Namn, Betyg, Bild, Producent, 'snaps' as typ from snaps WHERE Namn like '%" & Request.Form("sok") & "%' union select ID, Namn, Betyg, Bildliten, Producent, 'ol' as typ FROM ol WHERE Namn like '%" & Request.Form("sok") & "%' ORDER BY Namn"
ta_ut_allt.CursorType = 0
ta_ut_allt.CursorLocation = 2
ta_ut_allt.LockType = 3
ta_ut_allt.Open()
ta_ut_allt_numRows = 0
%>
```

hur gick det där?

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

## #20 — H_E_Pennypacker, 2001-04-05T14:08Z

Nja, nu verkar den bara ta ut information ur tabellen snaps, alla rader oavsett vad man söker på.
Så här ser hela seachresult.asp ut:

```
<%@LANGUAGE="VBSCRIPT"%> 
<!--#include file="Connections/Barbarnes_test.asp" -->
<%
set ta_ut_allt = Server.CreateObject("ADODB.Recordset")
ta_ut_allt.ActiveConnection = MM_Barbarnes_test_STRING
ta_ut_allt.Source = "SELECT ID, Namn, Betyg, Bild, Producent, 'snaps' as typ from snaps  union  select ID, Namn, Betyg, Bildliten, Producent, 'ol' as typ  FROM ol  WHERE Namn like '%" & Request.Form("sok") & "%'  ORDER BY Namn ASC"
ta_ut_allt.CursorType = 0
ta_ut_allt.CursorLocation = 2
ta_ut_allt.LockType = 3
ta_ut_allt.Open()
ta_ut_allt_numRows = 0
%>
<HTML>
<HEAD>
<TITLE> Sökresultat - från Bar Barnes</TITLE>
</HEAD>
<body>
<p> 
  <% If ta_ut_allt.EOF then %>
  Tyv&auml;rr s&aring; kunde inte din s&ouml;kning matchas med v&aring;r databas, 
  prova igen! 
  <% Else %>
  Din s&ouml;kning gav f&ouml;ljande tr&auml;ffar:</p>
<p>&nbsp;</p>
<p> 
  <% Do Until ta_ut_allt.EOF %>
  <%=UCASE(ta_ut_allt.Fields.Item("Namn").Value)%></p>
<p> 
  <%
		ta_ut_allt.MoveNext
		Loop
		%>
</p>
<%
End If
%>
</HTML>
<%
ta_ut_allt.Close()
%>
```

Och formuläret på söksidan ser ut så här:

```
<form name="form1" method="post" action="searchresult.asp">
                    <p align="center"> 
                      <input type="text" name="sok" size="20">
                      <input type="image" src="images/bb_sok.gif" width="56" height="32" border="0" name="image">
                    </p>
                  </form>
```

Några förslag?

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21411-sökning-i-flera-tabeller  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/21411-sökning-i-flera-tabeller/page2.md
