View Full Version : Domanda estrazione chiavi comuni tra 2 tabelle(database)
francescopi
07-11-2007, 13:27
Salve a tutti....
Per lavoro faccio spesso query su database oracle utilizzando sql navigatorl 4.13...
Siccome lavoro con moltissime tabelle vorrei sapere se cè un modo,un comando o un programma che date due tabelle mi dice i 2 campi o colonne che unisce le tabelle(in gergo tecnico dovrebbero essere le chiavi primarie)....
grazie
amedeoviscido
07-11-2007, 14:52
Beh se le due tabelle hanno il nome del campo comune uguale, basta dare un comando come questo:
SELECT * FROM TabellaA NATURAL JOIN TabellaB
Onestamente non so come si comporta Oracle, ma PostgreSQL effettua il lavoro anche se la chiave della "TabellaA" (o B) è in vincolo FOREIGN KEY con la chiave della TabellaB (o A). Spero di aver risolto, facci sapere.
--- EDIT ---
Ho notato che la domanda era un'altra, ho capito male :D
Vedo se c'è qualcosa. probabilmente devi andare a smanettare nelle tabelle interne del DB (lo Schema)
amedeoviscido
07-11-2007, 15:04
Ho creato una query che si riferisce al mio problema. In particolare i dati sono i seguenti:
Nome db: "sts_db"
Nome schema: "sts_dbms"
Tieni presente che la query che sto per darti trova TUTTI i campi con un nome comune, anche quelli che non sono primary key. Ad esempio, ho due tabelle, Prezzi e VecchiPrezzi, con un campo che si chiama allo stesso modo; questo risulta nella lista dei risultati. Quindi fai attenzione. Ecco la query:
SELECT A.table_name as "Tabella A",B.table_name as "Tabella B",A.column_name as "Nome colonna" FROM sts_db.information_schema.columns A, sts_db.information_schema.columns B where A.column_name=B.column_name AND A.table_name<>B.table_name AND A.table_schema='sts_dbms' AND B.table_schema='sts_dbms'
Il risultato che ottengo è il seguente. Per quanto riguarda la prima riga, si capisce che la tabella "ultimelavorazioni" e la tabella "locks" hanno un campo con lo stesso nome, "telef_code":
"ultimelavorazioni";"locks";"telef_code"
"ultimelavorazioni";"lavorazioni";"telef_code"
"log";"vecchiprezzi";"utente"
"log";"prezzi";"utente"
"log";"locks";"utente"
"prezzi";"vecchiprezzi";"ricavi"
"prezzi";"vecchiprezzi";"costi_fissi"
"prezzi";"log";"utente"
"prezzi";"vecchiprezzi";"utente"
"prezzi";"locks";"utente"
"prezzi";"lavorazioni";"nome_intervento"
"prezzi";"vecchiprezzi";"nome_intervento"
"prezzi";"interventi";"nome_intervento"
"prezzi";"lavorazioni";"gestore"
"prezzi";"vecchiprezzi";"gestore"
"prezzi";"interventi";"gestore"
"prezzi";"lavorazioni";"appalto"
"prezzi";"vecchiprezzi";"appalto"
"prezzi";"interventi";"appalto"
"secondi_nomi_centrali";"lavorazioni";"nomecentrale"
"secondi_nomi_centrali";"centrali_telefoniche";"nomecentrale"
"squadra";"lavorazioni";"id_squadra"
"tecnico";"utilizzo";"codice"
"tecnico";"utilizzo";"nome"
"tecnico";"magazzino";"nome"
"tecnico";"persona";"indirizzo"
"tecnico";"centrali_telefoniche";"indirizzo"
"utilizzo";"tecnico";"nome"
"utilizzo";"magazzino";"nome"
"utilizzo";"tecnico";"codice"
"magazzino";"tecnico";"nome"
"magazzino";"utilizzo";"nome"
"lavorazioni";"locks";"telef_code"
"lavorazioni";"ultimelavorazioni";"telef_code"
"lavorazioni";"squadra";"id_squadra"
"lavorazioni";"vecchiprezzi";"nome_intervento"
"lavorazioni";"prezzi";"nome_intervento"
"lavorazioni";"interventi";"nome_intervento"
"lavorazioni";"vecchiprezzi";"gestore"
"lavorazioni";"prezzi";"gestore"
"lavorazioni";"interventi";"gestore"
"lavorazioni";"vecchiprezzi";"appalto"
"lavorazioni";"prezzi";"appalto"
"lavorazioni";"interventi";"appalto"
"lavorazioni";"centrali_telefoniche";"regione"
"lavorazioni";"secondi_nomi_centrali";"nomecentrale"
"lavorazioni";"centrali_telefoniche";"nomecentrale"
"persona";"tecnico";"indirizzo"
"persona";"centrali_telefoniche";"indirizzo"
"vecchiprezzi";"prezzi";"ricavi"
"vecchiprezzi";"prezzi";"costi_fissi"
"vecchiprezzi";"log";"utente"
"vecchiprezzi";"prezzi";"utente"
"vecchiprezzi";"locks";"utente"
"vecchiprezzi";"lavorazioni";"nome_intervento"
"vecchiprezzi";"prezzi";"nome_intervento"
"vecchiprezzi";"interventi";"nome_intervento"
"vecchiprezzi";"lavorazioni";"gestore"
"vecchiprezzi";"prezzi";"gestore"
"vecchiprezzi";"interventi";"gestore"
"vecchiprezzi";"lavorazioni";"appalto"
"vecchiprezzi";"prezzi";"appalto"
"vecchiprezzi";"interventi";"appalto"
"interventi";"lavorazioni";"nome_intervento"
"interventi";"vecchiprezzi";"nome_intervento"
"interventi";"prezzi";"nome_intervento"
"interventi";"lavorazioni";"gestore"
"interventi";"vecchiprezzi";"gestore"
"interventi";"prezzi";"gestore"
"interventi";"lavorazioni";"appalto"
"interventi";"vecchiprezzi";"appalto"
"interventi";"prezzi";"appalto"
"locks";"ultimelavorazioni";"telef_code"
"locks";"lavorazioni";"telef_code"
"locks";"log";"utente"
"locks";"vecchiprezzi";"utente"
"locks";"prezzi";"utente"
"centrali_telefoniche";"lavorazioni";"nomecentrale"
"centrali_telefoniche";"secondi_nomi_centrali";"nomecentrale"
"centrali_telefoniche";"persona";"indirizzo"
"centrali_telefoniche";"tecnico";"indirizzo"
"centrali_telefoniche";"lavorazioni";"regione"
francescopi
08-11-2007, 09:26
ti ringrazio....cmq in genere a me i 2 campi sono uguali ma il nome delle colonne è diverso nelle 2 tabelle....
e queste 2 colonne con nome diverso ma con lo stessa valorizzazione del campo funzionano da ponte tra un db e l altro..
funziona lo stesso quello che hai scritto tu ?
amedeoviscido
08-11-2007, 13:26
Beh no... la query trova le tabelle con i campi aventi lo stesso nome!
Se invece cerchi tabelle che in campi differenti hanno gli stessi valori, la query va cambiata. Vedo se trovo qualcosa.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.