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

Diferencias

Estas en el tema de Diferencias en el foro de Bases de Datos General en Foros del Web. Hola a todos, primera vez que debo hacer una consuta de diferencias de datos y no de coincidencias. La tabla tTerminales = 646 Registros SELECT ...
  #1 (permalink)  
Antiguo 02/11/2009, 08:48
Avatar de mazingerz  
Fecha de Ingreso: febrero-2003
Ubicación: Sarasota FL
Mensajes: 147
Antigüedad: 21 años, 2 meses
Puntos: 0
Diferencias

Hola a todos, primera vez que debo hacer una consuta de diferencias de datos y no de coincidencias.
La tabla tTerminales = 646 Registros

SELECT dbo.TTerminal.OID,
dbo.TTerminal.UserId,
dbo.TTerminal.DialString,
dbo.TTerminal.Location,
dbo.TEntityUserVariable.UserVariableId,
dbo.TEntityUserVariable.Value,
dbo.TEntityUserVariable.Type
FROM dbo.TTerminal INNER JOIN dbo.TEntityUserVariable ON dbo.TTerminal.OID = dbo.TEntityUserVariable.EntityId
WHERE (dbo.TEntityUserVariable.UserVariableId = 6)

Me entrega 214 Registros, lo que esta bien. Ahora bien, como hago mi nueva consulta para listar los registros que no estan en la union. Osea la Diferencia de 432 registos de TTerminal que no estan en TEntityUserVariable.
He tratado con LEFT o RIGHT, como se hacen consultas de Diferencias.

Saludos.
  #2 (permalink)  
Antiguo 02/11/2009, 18:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Diferencias

Mazingerz,
cruzas las tablas con LEFT JOIN, que te traerá todos los datos de TTerminal (la primera antes del LEFT JOIN), con TEntityUserVariable, y cuando el programa no encuentra EntityId en TEntityUserVariable relacionado con OID, empareja OID con NULL, que es lo que buscamos en el WHERE...

Código sql:
Ver original
  1. SELECT dbo.TTerminal.OID,
  2. dbo.TTerminal.UserId,
  3. dbo.TTerminal.DialString,
  4. dbo.TTerminal.Location
  5. FROM dbo.TTerminal LEFT JOIN dbo.TEntityUserVariable ON dbo.TTerminal.OID = dbo.TEntityUserVariable.EntityId
  6. WHERE dbo.TEntityUserVariable.EntityId IS NULL

No lo he probado.
  #3 (permalink)  
Antiguo 04/11/2009, 08:47
Avatar de mazingerz  
Fecha de Ingreso: febrero-2003
Ubicación: Sarasota FL
Mensajes: 147
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Diferencias

Gracias Jurena, pero no funciona. Encontre haciendo otras querys y vi el NOT IN. Hice lo siguiente y me resulto bien, 432 registros, justo el diferencial.
Aca esta. Muchas gracias.

SELECT dbo.TTerminal.OID,
dbo.TTerminal.UserId,
dbo.TTerminal.DialString,
dbo.TTerminal.Location
FROM dbo.TTerminal
WHERE dbo.TTerminal.OID NOT IN (
SELECT dbo.TTerminal.OID
FROM dbo.TTerminal INNER JOIN dbo.TEntityUserVariable ON dbo.TTerminal.OID = dbo.TEntityUserVariable.EntityId
WHERE (dbo.TEntityUserVariable.UserVariableId = 6))
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:26.