Avatar billede helldesk Nybegynder
19. november 2004 - 08:56 Der er 16 kommentarer

Database opslag med værdier fra anden database

Jeg har et problem. Jeg skal hente data fra en database hvor jeg bruger værdier fra en anden database - altså et databasekald inden i et andet databasekald. Hvordan gør jeg det? Jeg har prøvet med at skuppe værdier over i mid_variabler, men det kan ikke bruges. Skematisk vil det nok se sådanne her ud: Databasekald, skriv af data, opslag i anden database med værdier fra først database, skriv data herfra, og slut af med data fra første database ...
Avatar billede vigilante Nybegynder
19. november 2004 - 09:04 #1
select felt1, felt2 fra db1 where felt1 = (select felt1 fra db2)

Hvis du vil have det mere præcist må du oplyse noget mere
Avatar billede ldanielsen Nybegynder
19. november 2004 - 09:36 #2
i vigilantes eksempel er db1 og db2 ikke to databaser, men to tabeller.

Hvis du arbejder med SQL-Server kan det godt lade sig gøre
Avatar billede vigilante Nybegynder
19. november 2004 - 10:20 #3
det kan det også i DB2, så mon ikke man kan i alle databaseservere?
Avatar billede helldesk Nybegynder
19. november 2004 - 11:45 #4
Det er 2 databaser (ikke to tabeller) og fra DB1 har jeg en værdi, jeg skal bruge til at slå op i DB2 med for at finde et record.
Avatar billede vigilante Nybegynder
19. november 2004 - 12:09 #5
Så burde du vel kunne prefix'e dem med Database navnet:

select * from DB2.TABELNAME where felt1 = (
  select felt1 from DB1.TABLENAME)
Avatar billede ldanielsen Nybegynder
19. november 2004 - 12:28 #6
Hvis det er MS-SQL, så skal det være <databasenavn>.<brugernavn>.<tabelnavn>

Og jeg ville bruge JOIN, og jeg ville aldrig bruge *:

select Feltnavn, EndnuEtFeltnavn from DB2.username.TABELNAME t2
INNER JOIN DB1.username.TABLENAME t1
ON t2.felt1 = t1.felt1

Den anden struktur ville resultere i en fejl af typen: "Du kan ikke bruge en SubQuery på denne måde fordi den kan returnere flere end en post"
Avatar billede helldesk Nybegynder
19. november 2004 - 12:29 #7
Jeg har ingen sql ..
Avatar billede ldanielsen Nybegynder
19. november 2004 - 13:06 #8
Hvilken database er det så?
Avatar billede vigilante Nybegynder
19. november 2004 - 13:27 #9
afhængig af tabelindholdet kan du have ret ldanielsen, og så kan man selvfølgelig bruge din join eller ændre = til in:

select * from DB2.TABELNAME where felt1 in (
  select felt1 from DB1.TABLENAME)

Men afhængig af hvad det præcis er hvad man skal have udført er der jo tonsvis af måder at gøre det på.

Men hvis der ikke er mulighed for sql er det jo ligegyldigt med vores forslag =)

Jeg kan dog ikke lige se hvad det skulle være for en DB hvor man ikke kan anvende sql? =)
Avatar billede helldesk Nybegynder
19. november 2004 - 13:53 #10
Det kan selvfølgelig også være mig der ikke ved hvad jeg snakker om ... nybegynder!!!Det er en access database på en asp-ting. Men hvis jeg tager den der: select * from DB2.TABELNAME where felt1 in (select felt1 from DB1.TABLENAME) ... hvordan skal jeg så initialisere databasen?
Avatar billede ldanielsen Nybegynder
19. november 2004 - 13:58 #11
Nå, så er problemet jo løst: Det kan man ikke med Access (er jeg 99,99% sikker på)
Avatar billede vigilante Nybegynder
19. november 2004 - 14:20 #12
Du burde kunne lave en almindelig connection til en af databaserne og så lave følgende:

Public Sub FillDS()
        Dim cmd As New OleDbCommand
        cmd.CommandText = "Select myName From tblTest where myName in" + _
                              "(Select myName From tblTest In
'E:\B.mdb')"
        cmd.Connection = con

        con.Open()
        Dim da As New OleDbDataAdapter(cmd)
        da.Fill(myDs, "Test")
        con.Close()
    End Sub

Jeg formoder du har styr på at kode det i asp =)
Avatar billede ldanielsen Nybegynder
19. november 2004 - 14:43 #13
det er jeg så 99,99999% sikker på ikke virker

SELECT * FROM tbl IN '<databasesti>'

Hvis det var muligt ville der ikke være så mange spørgsmål om connectionstrings :o)
Avatar billede ldanielsen Nybegynder
19. november 2004 - 14:46 #14
HEY!!!

Kan man ikke i Access lave et linked table? Dvs at man kan oprette en tabel, der i virkeligheden er en lænke til en tabel i en anden Access-fil.

Det tror jeg man kan, og så kan du jo fint lave det. blot skal Access'erne ligge på samme LAN, som minimum.

Der var så lige de sidste 0,01%, ikke?
Avatar billede ldanielsen Nybegynder
19. november 2004 - 14:56 #15
viquilante > DU HAR RET!

Har lige testet, og man kan faktisk gøre præcis det du siger.

Fra nu af er jeg ikke sikker på noget som helst :o)

- og så vil jeg i øvrigt holde weekend.

Undskyld alt sludderet.
Avatar billede vigilante Nybegynder
19. november 2004 - 15:08 #16
det er da ikke sludder, der er jo virkelig mange måder man kan gøre de samme ting på, og din ide med en linked table ville da også have virket.
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