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

Consulta con inner join

Estas en el tema de Consulta con inner join en el foro de SQL Server en Foros del Web. Hola tengo un problema para obtener los datos que deseo te explico estoy usando Sql tengo 2 tablas una licencia y otra liquidacion lo que ...
  #1 (permalink)  
Antiguo 26/07/2012, 09:20
 
Fecha de Ingreso: julio-2012
Ubicación: México, D.F
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Consulta con inner join

Hola
tengo un problema para obtener los datos que deseo te explico estoy usando Sql
tengo 2 tablas una licencia y otra liquidacion

lo que quiero saber es cuales de las licencias no estan en liquidacion, para esto tengo 2 campos que es forzasamente comparar

Titulo vs tema
catalogo vs producto

lo intente con un left outer join comparando los titulos que sean iguales una en otra aqui em trae los que cumplen la condicion por que así( por que muchas veces es el mismo tema en las 2 tablas pero tiene diferente catalogo) y los que no cumplen la condicion, terminado esto le pongo un where donde el catalogo i producto sean diferentes pero al hacer esto pierdo registros que no deberia perderse.

Practicamente puede ser esta las coincidencias
1. titulo = tema pero catalogo <> de producto
2.titulo <> tema
que puedo hacer ayudame por favor
  #2 (permalink)  
Antiguo 26/07/2012, 10: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: Consulta con inner join

con un left join lo generas

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 tabla 1 pero no en tabla2
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 26/07/2012, 11:36
 
Fecha de Ingreso: julio-2012
Ubicación: México, D.F
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Consulta con inner join

gracias pero sigue sin funcionar me da todos los campos que cumplen con la condicion pero si le pongo la siguiente condicion que de esos que me dio me de los que t1.catalogo <> de t2.producto ahi es donde se lleva datos que no deberia

Ejemplo si en el Left me dio registro

tabla resultado

catalogo titulo
1234 hola
23456 bien
7689 aqui

pero uno de estos no deberia estar por que catalogo = a producto
así que le agrego una condicion que me de los diferentes

y me hace esto

tabla1 tabla2
1234 hola 9456 hola
7689 aqui 7895 hola

lo que se supone que deberia hacer es darme
hola pero 1234 mas aqui 7689, pero no me elimina aqui 7689
  #4 (permalink)  
Antiguo 26/07/2012, 12:26
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: Consulta con inner join

puedes poner un ejemplo de los datos de tus tablas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 26/07/2012, 14:49
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta con inner join

De lo que yo entendi- para obtener las coincidencias utilice el Inner Join:
Código SQL:
Ver original
  1. SELECT  *
  2. FROM    licencia Lc
  3. INNER JOIN liquidacion Lq
  4.     ON (Lc.titulo=Lq.tema AND Lc.catalogo<>Lq.producto)
  5.     OR Lc.titulo<>Lq.tema;
y para obtener la resta (las filas de licencia que no coincidan con liquidacion) utilice el Left Join combinado con Where Null:
Código SQL:
Ver original
  1. SELECT  *
  2. FROM    licencia Lc
  3. LEFT JOIN liquidacion Lq
  4.     ON (Lc.titulo=Lq.tema AND Lc.catalogo<>Lq.producto)
  5.     OR Lc.titulo<>Lq.tema
  6. WHERE   Lq.tema IS NULL;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: join, 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 17:23.