Re: consulta diferencia entre 2 tablas

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Carlos Mendez <lucas1850(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: consulta diferencia entre 2 tablas
Date: 2009-08-13 17:11:19
Message-ID: 20090813171119.GO5909@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Carlos Mendez escribió:
> Hola como estan,
>
> tengo 2 tablas que tienen datos de alumnos pero necesito saber que alumnos
> estan en una tabla pero no en la otra, los nombres de los campos son
> paterno,materno,nombre.

Quizas así (estan en tabla1 pero no en tabla2):

select paterno, materno, nombre from tabla1
except all
select paterno, materno, nombre from tabla2

Obviamente no puedes obtener el ID de tabla1 de esta manera. Pero
puedes usarlo en un subquery:

select * from tabla1 where
(paterno, materno, nombre) IN (
select paterno, materno, nombre from tabla1
except all
select paterno, materno, nombre from tabla2
);

También puedes intentar un LEFT JOIN:

select * from tabla1 left join tabla2 using (paterno, materno, nombre)
where tabla2.paterno is null and tabla2.materno is null and tabla2.nombre is null;

O los ya mencionados NOT IN y NOT EXISTS.

Obviamente tienes que tener mucho cuidado con los nombres repetidos.

--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
The easiest way to resolve [trivial code guidelines disputes] is to fire
one or both of the people involved. (Damian Conway)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-08-13 17:13:22 Re: Funcion para saber cuantas filas retorna una consulta
Previous Message Javier Chávez B. 2009-08-13 16:47:37 Re: consulta diferencia entre 2 tablas