- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query join tra database diversi
-
Query join tra database diversi
Cari utenti sono incorso nel classico problema, nonostante ho spulciato tutti i vecchi post non sono riuscito a fare girare la mia query che estrae da due database contemporaneamente.
Praticamente il mio è un forum, i messaggi vengono salvati sulla tabella forum del database admin_p_bacheca, e i dati relativi all'utente vengono salvati nella tabella user del database admin_pvg.
[php]$iniziale = "SELECT admin_p_bacheca.forum.autore, admin_p_bacheca.forum.titolo, admin_p_bacheca.forum.messaggio, admin_p_bacheca.forum.data, admin_p_bacheca.forum.chiuso, admin_pvg.user.sesso, admin_pvg.user.villaggio, admin_pvg.user.araldica, admin_pvg.user.mestiere FROM admin_p_bacheca.forum, admin_pvg.user WHERE admin_p_bacheca.forum.id = '$messaggio' && admin_p_bacheca.forum.autore = admin_pvg.user.nome";
$iniziale_exe = mysql_query ($iniziale);
$iniziale_dati = mysql_fetch_array ($iniziale_exe);
mysql_free_result ($iniziale_exe);[/php]
Ecco la query che non riesco a fare girare, in quanto mi da il classico errore dato da query vuota.I database sono entrambi selezionati tramite mysql_select_db, alle voci $conn(admin_pvg) e $conn3 (admin_p_bacheca)
Aiutooooooooo
-
Ciao Siremar,
il tuo problema non è banale, o meglio non lo è per me: join fra tabelle su diversi db non ne ho mai fatte. Speriamo che qualcuno possa dirci il contrario, ma per come la vedo io l'ultimo mysql_select_db annulla quello precedente, pertanto avresti sempre una sola tabella selezionata.Come sempre dipende dal caso specifico, ma generalmente è molto più facile cambiare l'approccio al problema che tentare di trovare soluzioni complicate. La clausola where nel tuo caso è:
WHERE admin_p_bacheca.forum.id = '$messaggio' && admin_p_bacheca.forum.autore = admin_pvg.user.nome
il che mi fa venire in mente, senza conoscere a fondo i termini del problema, che potresti spezzare la query in due. Prima selezioni admin_p_bacheca e fai una query del tipo:
select ..... FROM forum WHERE id = '$messaggio'
e ti fai restituire il campo autore:
$row = mysql_fetch_array($result_db, MYSQL_ASSOC);
$autore=$row['autore'];quindi selezioni il db admin_pvg e fai la query del tipo:
select ..... FROM user WHERE nome = '$autore'
In teoria (cioè se ho capito bene il tuo problema :D) il risultato dovrebbe essere come quello da te cercato.
Fra tabelle di db diversi forse si riesce a fare delle UNION ma che non risolverebbe comunque il tuo problema.
Aspettiamo tuoi feedback ed altri suggerimenti...