Avatar billede meyer Nybegynder
28. februar 2003 - 11:54 Der er 14 kommentarer og
1 løsning

Søge i flere databaser samtidig

Hvordan søger jeg nemmest og bedst igennem flere databaser ?? feltnavnene er de samme..
Avatar billede nozio Nybegynder
28. februar 2003 - 13:10 #1
Flere databaser på samme server eller ?
Avatar billede meyer Nybegynder
28. februar 2003 - 13:11 #2
Ja på samme server!
Avatar billede nozio Nybegynder
28. februar 2003 - 13:18 #3
Det kræver en bruger der har rettigheder til at søge på begge databaser - så er det noget som det her:

select top 10 *
from <database1>.dbo.<tabel>, <database2>.dbo.<tabel>
where <database1>.dbo.<tabel>.<column> = <database2>.dbo.<tabel>.<column>

- hvis du vil joine de 2 tabeller , ellers arbejder du bare videre herfra :)
Avatar billede meyer Nybegynder
28. februar 2003 - 13:23 #4
Det jeg skal er at søge på et ord - og så liste alle forekomster på et felt fra begge baser.
Avatar billede meyer Nybegynder
28. februar 2003 - 13:30 #5
Kan du ikke lave et kort eks.?

Hvis søgevariablen hedder KEYWORD og baserne hedder DATABASE1 og DATABASE2 - og feltet hedder FELT1 ??
Avatar billede nozio Nybegynder
28. februar 2003 - 13:32 #6
Så lav det i asp'en - med 2 forskellige connections og lav et samlet resultat.
Avatar billede arnvig Nybegynder
28. februar 2003 - 13:39 #7
Lav en union:

SELECT <felter>
FROM <db1>.DBO.<table2>
WHERE  <kriterie>
UNION
SELECT <felter>
FROM <db2>.DBO.<table2>
WHERE  <kriterie>
Avatar billede nozio Nybegynder
28. februar 2003 - 13:55 #8
select FELT1
from DATABASE1.dbo.KEYWORD d1 , DATABASE2.dbo.KEYWORD d2
where d1.FELT1 = d2.FELT1
and d1.FELT1 = 'det jeg søger efter'

- ved ikke om tabellen hed KEYWORD eller :) , men du kan sikkert se princippet
Avatar billede meyer Nybegynder
28. februar 2003 - 13:57 #9
I må undskylde jeg er lidt tung i dag - har jobbet i 38 timer i træk ;-(

Sådan her plejer jeg at åbne min connection:

<!--#include file="db.asp"-->

Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open db
strSQL = "SELECT * FROM varer"
Set rs = myConn.Execute(strSQL)
%>

hvis jeg så skal lave en UNION i stedet hvad gør jeg så lige ???

lad os sige at jeg har db og db1.....
Avatar billede nozio Nybegynder
28. februar 2003 - 14:03 #10
<!--#include file="db.asp"-->

Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open db
strSQL = "SELECT FELT1 " &_
        "FROM db.DBO.tabel " &_
        "WHERE  FELT1 = 'søgeord' " &_
        "UNION " &_
        "SELECT FELT1 " &_
        "FROM db1.DBO.tabel " &_
        "WHERE FELT1 = 'søgeord'"
Set rs = myConn.Execute(strSQL)
%>
Avatar billede meyer Nybegynder
28. februar 2003 - 14:24 #11
Så får jeg den her: "C:\WINDOWS\system32\myconn.DBO" kan ikke findes.
Avatar billede nozio Nybegynder
28. februar 2003 - 14:26 #12
C:\WINDOWS\system32\myconn.DBO ??? - fra en asp-side

tror du skulle få sovet lidt :)
Avatar billede meyer Nybegynder
28. februar 2003 - 14:37 #13
Det har du nok ret i :-) men med denne her:

Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open db
strSQL = "SELECT * " &_
    "FROM db.DBO.varer " &_
        "WHERE Varenavn1 LIKE '%" & keyword & "%' or Beskrivelse LIKE '%" & keyword & "%' ORDER BY Varenummer" &_
        " UNION " &_
        "SELECT * " &_
        "FROM db1.DBO.varer " &_
        "WHERE Varenavn1 LIKE '%" & keyword & "%' or Beskrivelse LIKE '%" & keyword & "%' ORDER BY Varenummer"
Set rs = myConn.Execute(strSQL)

Får jeg denne her:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Filen "C:\WINDOWS\system32\db.DBO" kan ikke findes.
Avatar billede nozio Nybegynder
28. februar 2003 - 15:20 #14
Se der kom det meget vigtige ord : ACCESS !!!!

Der kan du ikke bruge UNION eller noget af det andet ! - godt nok er det 2 batabaser på samme server , men de har INGEN forbindelse med hinanden.

Vi gik vist alle ud fra at det var en SQL-server.

Så må du lave 2 connections og samle resultatet op i den samme variabel.

<!--#include file="db.asp"-->

Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open db
strSQL = "SELECT * FROM varer"
Set rs = myConn.Execute(strSQL)
do while not RS.EOF
  samler = samler & RS("felt1")
RS.MoveNext
loop

RS.Close
Set RS = Nothing



<!--#include file="db2.asp"-->

Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open db
strSQL = "SELECT * FROM varer"
Set rs = myConn.Execute(strSQL)
do while not RS.EOF
  samler = samler & RS("felt1")
RS.MoveNext
loop

RS.Close
Set RS = Nothing


- hvor db2.asp inholder en connection til den anden Access-DB
Avatar billede meyer Nybegynder
28. februar 2003 - 15:23 #15
ok så må jeg videre på den gamle måde - tak skal du ha' :-)
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

IT-JOB

Politiets Efterretningstjeneste

Platform Engineer hos PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior specialister (Datacenter Network) til Forsvarets nye Digitale Backbone

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporter til lokal IT støtte i Tirstrup

Kræftens Bekæmpelse

IT-driftsleder