PDA

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


fafa
16-03-2005, 18: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, 23: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, 10: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, 10: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, 11: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, 11:04
..scusa, ma non mi sono accorto che la prima risposta è "partita" incompleta mentra ancora la stavo scrivendo...

tglman
17-03-2005, 11: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, 11: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, 12: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, 17: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, 09: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, 11: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, 17: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, 17:56
..grazie comunque per l'interessamento..;)
ciao

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.