2010-12-31 12 views
5

HI,Selezionare un valore distinto in più tabelle (SQL)

Ho un database con 3 tavoli TAB1, TAB2, TAB3 che hanno esattamente le stesse colonne, ad esempio:

TAB1 
cola, colb, colc, cold 
TABB 
cola, colb, colc, cold 
... 

Ora vorrebbe cercare tutti i valori distinti "COLB", questa è la query:

SELECT DISTINCT colb FROM TAB1 

funziona perfettamente, ma ora vorrei cercare tutti i valori distinti "COLB" nel mio 3 tavoli "TAB1", "TAB2", "TAB3 ":

SELECT DISTINCT colb FROM TAB1, TAB2, TAB3 

E ora mi SQL restituirà un errore: "La colonna 'Colb' nella lista dei campi è ambiguo" Dopo qualche ricerca, ho capito che era perché la colonna 'Colb' esiste nei miei 3 tavoli.

Così come la ricerca nelle mie 3 tabelle un valore distinto dalla stessa colonna? Non posso usare LEFT JOIN perché voglio cercare nei miei 3 tavoli e non in uno di essi.

Avete un'idea? Grazie

+0

di grazie !!! – Jensen

risposta

5

Questa singola query con unione si prenderà cura di valori distinti per te.

select colb from tab1 union 
    select colb from tab2 union 
    select colb from tab3; 
+0

Grazie per aver risolto il mio problema !!! – Jensen

2
select colb from tab1 union 
select colb from tab2 union 
select colb from tab3 
0
SELECT DISTINCT TAB1.colb,TAB2.colb,TAB3.colb FROM TAB1, TAB2, TAB3 
+1

Questo probabilmente sprecherebbe troppe risorse per ottenere la risposta. A seconda delle dimensioni di TAB1, TAB2 e TAB3 questo potrebbe non finire mai. – cherouvim

0

SELEZIONA cola Distinto da unione tab1

SELEZIONA cola Distinto da unione tab2

SELEZIONA cola Distinto da TAB3

+1

Union gestisce il distinto per te. Non c'è bisogno di includerlo nella query. – cherouvim

+0

Esattamente. Vai per la soluzione Ronnis. !!! –

0

in Sybase, è possibile utilizzare la sintassi che @cherouvim pubblicato, puoi immaginare la sottoquery come una tabella.

Si può anche utilizzare le tabelle temp

tutti
select colb into #t1 from TAB1 
insert into #t1(colb) values(select colb from TAB2) 
insert into #t1(colb) values(select colb from TAB3) 
select distinct colb from #t1 
Problemi correlati