2010-12-31 21 views
5

HI,Seleccionar un valor distinto en varias tablas (SQL)

Tengo una base de datos con 3 mesas TAB1, TAB2, TAB3 que tienen exactamente las mismas columnas, por ejemplo:

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

Ahora le gustaría buscar todos los valores distintos "colb", se trata de la consulta:

SELECT DISTINCT colb FROM TAB1 

funciona perfectamente pero ahora sería buscar todos los valores distintos "colb" en mis 3 mesas "TAB1", "TAB2", "TAB3 ":

SELECT DISTINCT colb FROM TAB1, TAB2, TAB3 

Y ahora me SQL devuelve un error: "La columna 'colb' en la lista de campos es ambigua" Después de alguna búsqueda, entendí que era porque la columna 'colb' existe en mis 3 mesas.

Entonces, ¿cómo buscar en mis 3 tablas un valor distinto de la misma columna? No puedo usar LEFT JOIN porque quiero buscar en mis 3 tablas y no en ninguna de ellas.

¿Tienes una idea? Gracias

+0

de gracias !!! – Jensen

Respuesta

5

Esta única consulta con unión se ocupará de distintos valores para usted.

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

Gracias que resuelvan mi 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

Esto probablemente desperdiciará demasiados recursos para obtener la respuesta. Dependiendo del tamaño de TAB1, TAB2 y TAB3, esto puede no terminar nunca. – cherouvim

0

SELECT cola A diferencia de la unión Tab1

SELECT cola A diferencia de la unión Sep2

SELECT cola A diferencia de Tab3

+1

Union maneja lo distinto para usted. No es necesario incluirlo en la consulta. – cherouvim

+0

Exactamente. ¡Ve por la solución de Ronnis! –

0

En Sybase, puede utilizar la sintaxis que @cherouvim publicado, puedes imaginar la subconsulta como una tabla.

También puede utilizar tablas temporales

todos
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