Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

comparar dos registros en SQL

Estas en el tema de comparar dos registros en SQL en el foro de SQL Server en Foros del Web. solo es una consulta sobre sql. queria saber si hay alguna manera de comparar campo a campo dos tablas usadas en una SELECT. Ejmplo select ...
  #1 (permalink)  
Antiguo 06/06/2006, 09:25
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
comparar dos registros en SQL

solo es una consulta sobre sql.

queria saber si hay alguna manera de comparar campo a campo dos tablas usadas en una SELECT. Ejmplo

select a.A1, b.A1
from tabla_1 a
inner join tabla_2 b on
b.campo = a.campo

¿hay alguna sentencia que compare a.A1 con b.A1?
¿hay alguna sentencia que diga en que campos hay distinta información entre las tablas tabla_1 y tabla_2, siendo la misma esturctura de campos?

Espero haberme explicado y muchas gracias
  #2 (permalink)  
Antiguo 06/06/2006, 09:40
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Tienes que hacer un procedimiento almacenado y por medio de un cursor barrerte los queries para comparar si los datos son iguales
  #3 (permalink)  
Antiguo 06/06/2006, 09:46
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola alberto.c:
Si es que te entendi, tu tienes dos tablas con campos iguales y lo que deseas es saber que datos son diferentes entre ambas tablas, es asi?.
Si asi lo es, puedes realizar un MINUS entre ambas tablas:

SELECT campos
from tabla1
MINUS
SELECT campos
from tabla2

Ahora esto te lo haria de la tabla1 con referencia a la tabla2. Si quieres hacerlo a la inversa solo cambias, cambias el orden de las consultas.
Saludos, espero que sea lo que desees
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 06/06/2006, 09:55
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
no encuentro nada sobre MINUS en la ayuda de sql (tengo sql 2000)
  #5 (permalink)  
Antiguo 06/06/2006, 09:59
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
hijole! lo del minus no me la sabia... gracias pequeño mauro por la aportacion

Aunque por allí dicen que no existe en la ayuda je je, ya lo voy a probar
  #6 (permalink)  
Antiguo 06/06/2006, 10:12
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
podeis pasarme la ayuda de MINUS???
muchas gracias
  #7 (permalink)  
Antiguo 06/06/2006, 10:18
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Muchachos:
Acabo de leer que SQL Server no utiliza MINUS, pero es lo mismo hacerlo con:

NOT IN o NOT EXISTS, o con LEFT JOIN

Ejemplos

SELECT campos from tabla1 t1
WHERE NOT EXISTS
(SELECT * FROM tabla2 t2
WHERE t2.codigo=t1.codigo);

En este caso codigo vendria a ser un campo en común entre ambos, ya sea una llave identificadora de la tabla o el campo que deseas tener como referencia si es que existe (o no existe) datos en una tabla respecto a la otra.

Con NOT IN, especificas el campo:

Cita:
SELECT campos from tabla1 t1
WHERE t1.codigo NOT IN
(SELECT t2.codigo FROM tabla2 t2
WHERE t2.codigo=t1.codigo);
Y bueno, LEFT JOIN, que seguramente encontraras en el help de Sql Server...

MINUS se usa en Oracle y es similar a lo mencionado lineas arriba....
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #8 (permalink)  
Antiguo 06/06/2006, 10:22
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
ok, eso que has dicho ya lo he probado pero no compara campo a campo a menos que filtres.

De todos muchas grcias por vuestro interes.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:33.