Avatar billede sunweb Nybegynder
11. januar 2006 - 08:39 Der er 11 kommentarer og
1 løsning

Søge i flere tabeller i samme access db

Hejsa,

Jeg sidder med et mindre problem, jeg kan ikk huske hvordan man laver en join mellem flere tabeller i en access database.

Er der nogen der kan hjælpe mig???

På forhånd tak!
Avatar billede softspot Forsker
11. januar 2006 - 08:44 #1
F.eks.

SELECT *
FROM tabel1
INNER JOIN tabl2 ON tabel1.id = tabel2.tabel1id

hvis tabel2 har en fremmednøgle ved navn tabel1id der peger tilbage på tabel1's id.
Avatar billede softspot Forsker
11. januar 2006 - 08:47 #2
INNER JOIN finder alle de rækker i de to tabeller hvor der er sammenfald mellem tabel1.id og tabel2.tabel1id.

Du kan også benytte LEFT JOIN som finder alle rækker i tabel1 og evt. de rækker i tabel2 som har en reference tilbage til tabel1.id. RIGHT JOIN har så efter min bedste overbevisning den omvendte effekt, altså at den finder alle rækker i tabel2 og evt. de rækker i tabel1 hvor id har sammenfald med tabel2.tabel1id... jeg har dog ikke brugt RIGHT JOIN i særlig grad, så den er jeg lidt mere usikker på :)
Avatar billede sunweb Nybegynder
11. januar 2006 - 08:49 #3
SELECT id,sagsnummer,kunde,opgave,konsulent,status FROM casescontrol2001
INNER JOIN casecontrol2001 ON casecontrol2001.id = casecontrol2002.casecontrol2001id

F.eks. sådan der????
Avatar billede softspot Forsker
11. januar 2006 - 08:53 #4
Ja, det ser korrekt ud. Du kan også lave alias for dine tabeller (hvis du er lidt doven eller bare synes dine tabelnavne forringer overblikket over dine SQL-sætninger). Det kan gøres således:

SELECT id,sagsnummer,kunde,opgave,konsulent,status
FROM casescontrol2001 AS c2k1
INNER JOIN casecontrol2001 AS c2k2 ON c2k1.id = c2k2.casecontrol2001id
Avatar billede sunweb Nybegynder
11. januar 2006 - 09:43 #5
Okay, ser fornuftig ud! Men hvor er det lige jeg præcis kobler en db mere på, eks. casecontrol2003 ?

Tak for hjælpen
Avatar billede softspot Forsker
11. januar 2006 - 09:48 #6
Det afh. lidt af hvordan din database er skruet sameen, men under antagelse af at den nye tabel ref. tilbage til det foregående år, så kunne det være således:

SELECT id,sagsnummer,kunde,opgave,konsulent,status
FROM (casescontrol2001 AS c2k1
INNER JOIN casecontrol2001 AS c2k2 ON c2k1.id = c2k2.casecontrol2001id)
INNER JOIN casecontrol2003 AS c2k3 ON c2k2.id = c2k3.casecontrol2002id
Avatar billede softspot Forsker
11. januar 2006 - 09:58 #7
Ups! Der har sneget sig en lille fejl ind i tabelnavnet for 2002 tabellen. Rettet herunder:

SELECT id,sagsnummer,kunde,opgave,konsulent,status
FROM (casescontrol2001 AS c2k1
INNER JOIN casecontrol2002 AS c2k2 ON c2k1.id = c2k2.casecontrol2001id)
INNER JOIN casecontrol2003 AS c2k3 ON c2k2.id = c2k3.casecontrol2002id
Avatar billede sunweb Nybegynder
11. januar 2006 - 10:30 #8
Jag takker mange gange, fik lige smidt en gang søge kode på også.. Så det spiller bas! ;)
Avatar billede softspot Forsker
11. januar 2006 - 10:41 #9
Det er lækkert! Velbekomme :)
Avatar billede softspot Forsker
11. januar 2006 - 10:43 #10
Tak for point :)
Avatar billede sunweb Nybegynder
11. januar 2006 - 10:44 #11
Så lidt :) Tak for hjælpen!!
Avatar billede sunweb Nybegynder
12. januar 2006 - 14:36 #12
Hey softspot,

Jeg sidder med en anden kode på sitet idag, og vil gerne ha nedenstående kode til at kunne det samme som din fra igår? Har du et par min til overs???

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../../db/suncms_pages.mdb")
Conn.Open DSN
strSQL = "
SELECT * FROM (casescontrol2001 AS c2k1 INNER JOIN casecontrol2002 AS c2k2 ON c2k1.id = c2k2.casecontrol2001id)
INNER JOIN casecontrol2003 AS c2k3 ON c2k2.id = c2k3.casecontrol2002id
INNER JOIN casecontrol2004 AS c2k3 ON c2k2.id = c2k3.casecontrol2003id
INNER JOIN casecontrol2005 AS c2k3 ON c2k2.id = c2k3.casecontrol2004id
INNER JOIN casecontrol2006 AS c2k3 ON c2k2.id = c2k3.casecontrol2005id Where sagsnummer = " & Request.Querystring("CaseNumber")
Set rs = Conn.Execute(strSQL)
%>

Får en laaaang fejl :D

Håber du har tid...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester