PDA

View Full Version : relazioni tra 2 database (quindi non 2 tab dello stesso db)


fafa
16-03-2005, 17:24
Ciao a Tutti, vi chiedo questo :
devo correlare 2 tabelle tra loro (hanno in comune i dati di un campo) che però fanno parte di 2 database diversi. Uso MySql e ASP e quando devo correlare 2 tab dello stesso database mi basta usare "left join" nella query sql. Se però le 2 tabelle appartengono a 2 database diversi (sempre in MySql comunque) come posso fare?
Grazie 1000 fin da ora
Fabio

tglman
16-03-2005, 22:18
Se i db sono sullo stesso server forse è sufficente eseguire la inserire namedb.nametab nelle query altrimenti non esistono collegamenti ad db esterni (ma esistono su dbms oracle)

fafa
17-03-2005, 09:48
intanto grazie per la risposta. I database sono sullo stesso server e sono in MySql. Il problema che non riesco a risolvere è che se le due tabelle fanno parte dello stesso database in ASP basta collegarle con un "left join". Così ad es. se ho il solo database "TABELLE" :

Dim conn
Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Driver={MySQL};Database=tabelle;UID=utente_1;PWD=prova_1;"

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

rs.open "select * from articoli left join clienti on articolo_1=fattura_1 ", conn

Se però ho 2 database (tipo: "clienti_tabelle" e "articoli_tabelle" dove il campo "fattura_1" fa parte di "clienti_tabelle") come posso fare dato che se

tglman
17-03-2005, 09:57
se ti funziona questa query(con le tabelle nello stesso db):
select * from articoli left join clienti on articolo_1=fattura_1

molto probabilmente ti funzionera anche cosi(con tabelle in 2 diversi db):
select * from articoli_tabelle.articoli left join clienti_tabelle.clienti on articolo_1=fattura_1

Ciao..

fafa
17-03-2005, 10:00
..intanto grazie per la risposta. I database sono sullo stesso server e sono in MySql. Il problema che non riesco a risolvere è che se le due tabelle fanno parte dello stesso database in ASP basta collegarle con un "left join". Così ad es. se ho il solo database "TABELLE" :

Dim conn
Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "Driver={MySQL};Database=tabelle;UID=utente_1;PWD=prova_1;"

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

rs.open "select * from TAB_1 left join TAB_2 on TAB_1.CAMPO_1=TAB_2.CAMPO_1 ", conn

Se però ho 2 database (tipo: "TABELLE" e "CARTELLE" dove il campo "TAB_1.CAMPO_1" fa parte di "TABELLE" mentre il campo "TAB_2.CAMPO_1" fa parte di "cartelle") come posso fare?

Grazie 1000

fafa
17-03-2005, 10:04
..scusa, ma non mi sono accorto che la prima risposta è "partita" incompleta mentra ancora la stavo scrivendo...

tglman
17-03-2005, 10:29
Sempre nello stesso modo:
select * from TABELLE.TAB_1 left join CARTELLE.TAB_2 on CAMPO_1=CAMPO_1


Gli unici problemi che puoi trovare sono relativi hai permessi, cioè puoi accedere ad un db ma non hai le autorizzazioni per accedere all'altro, oppure hai i nome dei campi uguali a a quel punto devi usare gli alias.
ciao..

fafa
17-03-2005, 10:58
..già ma il problema è che non so come fare per inserire entrambi i database nella stessa "connection", ossia dovrei fare qualcosa del tipo:

conn.Open "Driver={MySQL};Database=tabelle,cartelle;UID=utente_1;PWD=prova_1;"

ma così non va...

tglman
17-03-2005, 11:27
probabilmente la connessione va bene anche solo ad un db e poi se la tua utenza a la possibilità può accedere come suddento anche all'altro.
Curiosità se invece ometti a quale database vuoi connetterti cosa succede ??

fafa
17-03-2005, 16:26
..se ometto il database mi da un errore perchè manca il database..credo non ci sia alternativa, farò un'altra tabella in uno dei due database.
Ciao

tglman
18-03-2005, 08:40
Scusa ma se esegui una query del tipo:

"select * from db2.nometab"

collegandoti con la stringa:
"Driver={MySQL};Database=db1;UID=utente_1;PWD=prova_1;"

Funziona ??(dorebbe funzionare)

fafa
21-03-2005, 10:21
..scusa il ritardo ma non ero in grado di collegarmi.
No, purtroppo se faccio

"select * from db2.nometab"

collegandoti con la stringa:
"Driver={MySQL};Database=db1;UID=utente_1;PWD=prova_1;"

non funziona perchè il "Database=db1" dichiarato è diverso da quello nella query (db2)..

tglman
21-03-2005, 16:21
Non so più cosa dirti, ho provato anch'io adesso e o notato che non funziona (però oracle lo permette).
ti convine copiare la tabella nell'altro db ciao...(mi dispiace)

fafa
21-03-2005, 16:56
..grazie comunque per l'interessamento..;)
ciao