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

Contar registros de 2 tablas y genere solo diferencias

Estas en el tema de Contar registros de 2 tablas y genere solo diferencias en el foro de SQL Server en Foros del Web. Buenas tardes, compañeros y compañeros del Forosdelweb. La intrigante de la apertura del tema, es que trato y trato de conseguir lo deseado y no ...
  #1 (permalink)  
Antiguo 20/12/2012, 12:52
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta Contar registros de 2 tablas y genere solo diferencias

Buenas tardes, compañeros y compañeros del Forosdelweb.

La intrigante de la apertura del tema, es que trato y trato de conseguir lo deseado y no encuentro una respuesta exacta en Google o al menos, no de lo que busco realmente.

La cosa parece simple pero no la encuentro.

Donde laboro, poseo 2 Base de datos, totalmente idénticas. 1 es espejo de otra, pero hay centrales que no envía totalmente todos sus registros a la DB General y por ende, llega desactualizado o nunca llega.

La cuestión es que solo funciona con casos especificos.

Tengo 2 tablas de 2 DB distintas, llamadas: HRESERVAS.

1 RESERVA me posee 1 habitacion en la original y la misma en la otra DB, aún está desactualizada y posee 1 RESERVA con 2 habitaciones, donde X razón no llegó su anulación/modificación de alguna.

Y para resumir, en la tabla HRESERVAS DE LA ORIGINAL, el Localizador posee 1 REGISTRO, a diferencia del HRESERVAS DE LA GENERAL que me posee 2.

Haciendo esto en la DB Original:

SELECT COUNT(*) FROM DB_ORIGINAL.HRESERVAS WHERE.......

Resultados: 1

Y en la DB General:

SELECT COUNT(*) FROM DB_GENERAL.HRESERVAS WHERE.......

Resultados: 2.

Ahora ¿Qué hacer? Sacar la diferencia y eliminar la diferencia en la GENERAL.

La cuestion es hacer esto con unas 500 RESERVAS diarias, y luego empezaré yo a buscar la diferencia sin problemas.

La idea es saber ¿EXISTEN DIFERENCIAS? Es decir, SI NO HAY DIFERENCIA, NO ME MOSTRARÁ NADA O: 0.

Pero si las hay en X REGISTRO, que me lo muestre y yo proceda.

Es decir, para resumir:

-> Hago una comparación de COUNT en ambas tablas Y ME MUESTRE LA DIFERENCIA: 1 Diferencia en ambas tablas.

En caso de ser así, quedaría perfecto.

Probé con LEFT JOIN, NO EXISTS, IN, Y nada que me lo da.

La única diferencia sería sacar el COUNT y que me genere la diferencia de los 2.

Agradecido estaré de sus sugerencias y soluciones.

Cordial saludo. Felíz día!
__________________
:si: ANTARES:si:
  #2 (permalink)  
Antiguo 20/12/2012, 13:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Contar registros de 2 tablas y genere solo diferencias

Algo así quiero generar:



Mostrar solo la diferencia y luego buscaré la manera de mostrarme las filas de acuerdo a su clave principal quienes fueron las que poseen esa diferencia.

Gracias.
__________________
:si: ANTARES:si:
  #3 (permalink)  
Antiguo 20/12/2012, 15:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Contar registros de 2 tablas y genere solo diferencias

select * from tabla1 as t1
left join tabla2 as t2 on (t1.id=t2.id)
where t2.id is null


asi sacas los que estan en t2 pero no en t1, si quieres la diferencia pues podria ser


select count(*)-(select count(*) from tabla2 where tabla2.id not in (selec id from tabla1) from tabla1

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 22/12/2012, 09:24
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Contar registros de 2 tablas y genere solo diferencias

Gracias, Libras por tomarte tu tiempo en responder.

Efectivamente, la segunda opción fue la que me funcionó. No sé si el primer párrafo lo comprendí mal, pero ni de una ni otra manera, pude encontrar el resultado exacto.

También saqué la diferencia de ambas tablas, marcando la diferencia, haciendo 2 SELECT´s y EXCEPT entre uno de los 2. Rápidamente me sacó las tablas con registros demás. De lo más fácil, no se como se refiere ese código en optimización y rapidez, pero me sacó sin ir a mucho la diferencia.

Lo que hice fue una resta, también.... Pero ahora ¿Sabrás como actualizar una tabla desde una DB a otra diferente?

Es decir, no es actualizar "Datos específicos", sino una tabla completa. Incluso, si la tabla filas demás, se eliminen y se coloquen únicamente las de la DB Original.

Es decir: DB_DESTINO.TABLA posee 2 FILAS.
DB_ORIGINAL.TABLA posee 1 FILA.

Actualizar desde la DB_ORIGINAL.TABLA a DB_DESTINO.TABLA, y si éste primero posee 1 FILA, que me borre las que estén en la DB_DESTINO.TABLA, o solo me actualice como esté en la DB_ORIGINAL.TABLA.

He intentado con varias sentencias, pero muchos son por datos específicos y no actualizan la tabla, sino agregan o modifican las existentes.

Reitero mi agradecimiento por su ayuda. Esto es como alternativa, sino, de igual manera, tendré que hacerlo manual. Pero sé que si se puede! Solo que mis conocimientos aún son mediano/bajo en SQL SERVER.

Cordial saludo. Feliz navidad, además.
__________________
:si: ANTARES:si:
  #5 (permalink)  
Antiguo 27/12/2012, 06:22
 
Fecha de Ingreso: marzo-2006
Mensajes: 43
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta Respuesta: Contar registros de 2 tablas y genere solo diferencias

Traté de investigar por red, y no sé si en SQL Server pocas cosas no son común a PostgreSQL o MySQL, pero no me funcionan ninguno de los métodos.

¿Alguien ha tenido la experiencia en dicho caso anterior o alguna sugerencia?

Gracias. Saludos.
__________________
:si: ANTARES:si:
  #6 (permalink)  
Antiguo 27/12/2012, 09:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Contar registros de 2 tablas y genere solo diferencias

lo que necesitas es plantear bien tu problema, que es lo que vas a hacer y para que? en este caso creo que necesitas un trigger un poco estructurado, ahora las 2 tablas que quieres afectar estan en el mismo server?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 27/12/2012, 10:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Contar registros de 2 tablas y genere solo diferencias

Busca en el red: SINCRONIZAR BASES DE DATOS.
__________________
MCTS Isaias Islas

Etiquetas: count, diferencia, server, sql
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 00:19.