SQL Server - problemas con left join

 
Vista:

problemas con left join

Publicado por lowrider (1 intervención) el 11/01/2012 14:13:00
Estimados, tengo un problema que me urge, por si alguien puede dar una mano.

necesito hacer una query que compare y rescate datos de dos tablas:
tabla 1 con datos oficiales, pero faltan campos.
tabla 2 datos errados + datos semi correctos, pero contiene los datos faltantes de tabla1.
no existe un digito unico (id) por registro, por lo que busco la mejor aproccimación entre 4 campos.

lo que debe hacer la query es dejar a la izquierda exactamente los registros y campos de la tabla 1; y adicionar en campos adicionales aquellos en que las cuatro coincidencias sean verdaderas, y donde la coincidencia sea falsa, dejar null.

Ambas tablas tienen mismo nombre de campos y número de campos, con formato igual.

Estaba trabajando, entre otras, con:

select *
from tabla1 a left join tabla2 b -- la tabla 1 es la buena y contiene los datos importantes
on a.c1=b.c1 and
a.c2=b.c2 and
a.c3=b.c3 and
a.c4=b.c4

esta opción me entrega registros de más, como 3000 registros de más de un total de 380000 tabla 1 y 590000 tabla2.

Favor su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problemas con left join

Publicado por Pedro (80 intervenciones) el 14/01/2012 15:10:14
Hola

yo hubiera atacado el problema con

Select xccc,cc from (
select oir,ert,ert, from (
select poi,poopij from (
) A
) B
) C

me parece mas piola para lo que estas planteando

Suerte y no te olvides de comentar como lo resolviste
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con left join

Publicado por jams (93 intervenciones) el 19/01/2012 19:18:30
ese query que planteas te regresa como resultado el total de los registros de tu tabla a n veces las que se encuentre en la tabla b, mas el totalde los registros que no esten en a, que es lo que tu necesitas obtener?

prueba esto con tu mismo query

declare @tabla1 table(c1 int,c2 int,c3 int,c4 int)
declare @tabla2 table(c1 int,c2 int,c3 int,c4 int,c5 varchar(1),c6 varchar(1))

insert into @tabla1 values(1,2,3,4)
insert into @tabla1 values(1,2,3,5)
insert into @tabla1 values(1,2,3,6)


insert into @tabla2 values(1,2,3,4,'a','b')
insert into @tabla2 values(1,2,3,4,'c','d')



select * from @tabla1
select * from @tabla2

select
*
from
@tabla1 a left join @tabla2 b -- la tabla 1 es la buena y contiene los datos importantes
on a.c1=b.c1 and
a.c2=b.c2 and
a.c3=b.c3 and
a.c4=b.c4


Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar