Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    14

    Query select su due tabelle identiche ma su db diversi

    Salve a tutti, sto provando a effettuare una query select su due tabelle identiche ma su 2 database differenti, da dove devo iniziare?

    Questa è la query su singola tabella su 1 db.

    Codice PHP:
    $connection mysql_connect("$db_host","$db_user","$db_password")    
    or die(
    "Impossibile stabilire la connessione.");
    $db mysql_select_db("$db_name"$connection)    
    or die(
    "Impossibile selezionare il database.");

    $query = ("SELECT imm.tipologia, imm.categoria, FROM categorie JOIN ..........ecc");  
    $risultato mysql_query($query,$connection)    
    or die(
    "Impossibile eseguire la query.");            
    while (
    $record=mysql_fetch_array($risultato))
    ....... 
    Mi piacerebbe capire come fare.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti la seconda query nel while della prima (la connessione al secondo db lasciala fuori da ciclo)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    14
    Ti ringrazio per la risposta ma non va..... altri metodi?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Fammi capire una cosa: la query che hai scritto a metà deve continuare interrogando la tabella dell'altro db?
    In tal caso non si può fare, con una query non puoi interrogare 2 db diversi.
    Se hai visto la documantezione della funzione mysql_query() avrai letto che come secondo parametro accetta il link al db sul quale deve essere eseguita, se non ci si scrive niente prende il link attivo... ma comunque uno solo, non 2 o più.
    Ne segue che ogni query può interagire con un solo db alla volta.

    Per fare quello che vuoi fare tu devi eseguire una query sulla tabella del primo db e recuperare i dati, poi una seconda query sulla tabella del secondo db recuperando gli altri dati e poi metterli insieme con codice php che faccia le stesse cose che avrebbe fatto la join per ottenere il risultato che hai in mente.

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    In tal caso non si può fare, con una query non puoi interrogare 2 db diversi.
    ....
    Ne segue che ogni query può interagire con un solo db alla volta.
    Ma neanche per sogno.
    Il parametro del database (che peraltro è un semplice nome, non un link) indica semplicemente il database di default usato nella query. In realtà in una query puoi utilizzare tutti i db che ti pare, basta anteporne il nome a quello della tabella (nomedb.nometabella.nomecolonna). Quando non lo fai viene usato il db di default.
    Ovviamente l'utente connesso dovrà avere i diritti anche su quel db.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ho dato per scontato che dovesse fare 2 mysql_connect() diversi (non solo 2 mysql_select_db() diversi) , per quello ho parlato del link da passare.
    Se ho capito male e si può usare la stessa connessione per entrambi i db allora ok.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    14
    Grazie ragazzi per le risposte, i db sono diversi ma le tabelle sono identiche per tutti e due.
    Provo ad anteporre il nome del db davanti ($db_name.imm.tipologia, ecc). Supponiamo che l'altro db è nella variabile $db_name2, devo eseguire due query in questo modo?

    Codice PHP:
    $query = ("SELECT $db_name.imm.tipologia, $db_name.imm.categoria, FROM $db_name.categorie JOIN ..........ecc"); 

    $query2 = ("SELECT $db_name2.imm.tipologia, $db_name2.imm.categoria, FROM $db_name2.categorie JOIN ..........ecc"); 

    $risultato mysql_query($query,$connection)    
    or die(
    "Impossibile eseguire la query.");            
    while (
    $record=mysql_fetch_array($risultato)) 

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    14
    Dimenticavo, posso usare la stessa connessione con il relativo unico utente.

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da Mara2013 Visualizza il messaggio
    Grazie ragazzi per le risposte, i db sono diversi ma le tabelle sono identiche per tutti e due.
    Provo ad anteporre il nome del db davanti ($db_name.imm.tipologia, ecc). Supponiamo che l'altro db è nella variabile $db_name2, devo eseguire due query in questo modo?

    Codice PHP:
    $query = ("SELECT $db_name.imm.tipologia, $db_name.imm.categoria, FROM $db_name.categorie JOIN ..........ecc"); 

    $query2 = ("SELECT $db_name2.imm.tipologia, $db_name2.imm.categoria, FROM $db_name2.categorie JOIN ..........ecc"); 

    $risultato mysql_query($query,$connection)    
    or die(
    "Impossibile eseguire la query.");            
    while (
    $record=mysql_fetch_array($risultato)) 
    In linea di massima il nome del db dovrebbe bastare davanti al nome della tabella nella FROM.
    Però quegli "or die("Impossibile eseguire...")" non si possono vedere. Se la query va male mostra l'errore mysql, invece di quei messaggi insignificanti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.