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

Otra dudilla

Estas en el tema de Otra dudilla en el foro de SQL Server en Foros del Web. Tengo 2 tablas . Sql server 2005 Express Ambas estan bastante igualadas, pero hay campos en cada una de ellas que no estan en la ...
  #1 (permalink)  
Antiguo 31/10/2011, 17:38
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Otra dudilla

Tengo 2 tablas . Sql server 2005 Express
Ambas estan bastante igualadas, pero hay campos en cada una de ellas que no estan en la otra y es lo que quiero sacar. El campo pagina esta en los dos siempre, pero el campo que puede variar es el repeticion.

tabla 1. (Campos) Pagina, Repeticion, Fecha
tabla 2 (Campos) Pagina, Repeticion, Fecha

Tabla 1:

Pagina, Repeticion, Fecha
54,1,30-11-2011
1,1,30-10-2011
54,2,30-11-2011
3,1,30-11-2011
3,2,30-11-2011

Tabla 2
Pagina, Repeticion, Fecha
54,1,30-11-2011
1,1,30-10-2011
1,2,30-11-2011
3,1,30-11-2011
3,2,30-11-2011

Quiero buscar 1 o 2 querys, que me saquen los resultados que no estan en las 2 tablas, En la primera deberia de dar el resultado:

54,2,30-11-2011

y en la segunda:

1,2,30-11-2011

He intentado:

SELECT *
FROM DBO.TABLA1, DBO.TABLA2
WHERE TABLA1.REPETICION NOT IN (SELECT TABLA2.REPETICION FROM DBO.TABLA2
WHERE CONVERT(VARCHAR,DBO.TABLA1.FECHA,103) = CONVERT(varchar , DBO.TABLA2.FECHA, 103)) AND
DBO.TABLA1.PAGINA = DBO.TABLA2.PAGINA;

pero no lo consigo... Agradezco ayudas.....
  #2 (permalink)  
Antiguo 31/10/2011, 18:22
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Otra dudilla

cuando trabajas dos tablas no es muy recomendable relacionarlas de esa forma, lo ideal es utilizar la funcion join, y para tu caso puedes usar left join o right join

acá te dejo un link para lectura donde encontraras una explicación de que es y como funciona -> clic aquí
  #3 (permalink)  
Antiguo 01/11/2011, 04:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Otra dudilla

Aun relacionandolas con inner join, el resultado es el mismo...
  #4 (permalink)  
Antiguo 01/11/2011, 06:28
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: Otra dudilla

si quieres en 2 querys puedes hacerlo de esta manera:


select * from tabla1
left join tabla2 on (tabla1.dato_comun=tabla2.dato_comun)
where tabla2.dato_comun is null


select * from tabla1
left join tabla2 on (tabla1.dato_comun=tabla2.dato_comun)
where tabla1.dato_comun is null


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 01/11/2011, 12:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Otra dudilla

Esto me valdría

select * from tabla1
left join tabla2 on (tabla1.dato_comun=tabla2.dato_comun)
where tabla1.dato_comun is null

Si fuera un solo campo el que debe de coincidir, pero son dos campos, tendria que ser algo parecido a esto

select * from tabla1
left join tabla2 on (tabla1.dato_comun=tabla2.dato_comun and tabla1.dato_comun2=tabla2.dato_comun2 )
where tabla1.dato_comun is null


Edito para decir que así si me está funcionando , creo...

Gracias

Última edición por klonico; 01/11/2011 a las 12:42

Etiquetas: fecha, select, server, sql, tabla, campos
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 21:58.