SQL - Cruce de tablas

   
Vista:

Cruce de tablas

Publicado por Carlos Rojas (1 intervención) el 08/10/2014 23:31:01
Buenas tardes:
Agradezco a alguien si me puede ayudar con este problema que tengo a la hora de consultar una información.
Lo que sucede es que estoy cruzando dos tablas, pero se me repiten dos registros, ya que una de las columnas tiene repetido el registro para dos distintos resultados, aqui esta la consulta y lo que devuelve:

select wkf.id_pv as id_pv_nuevo,
original.id_pv as id_pv_viejo,
wkf.cod_tarifa,
wkf.cod_item,
original.cod_ind_cob as cod_ind_cob_viejo,
wkf.cod_ind_cob as cod_ind_cob_nuevo
from di_cober_wkf as wkf
inner join di_cober as original on wkf.cod_tarifa = original.cod_tarifa and wkf.cod_item = original.cod_item
and wkf.cod_subramo=original.cod_subramo
where wkf.id_pv = 4993162 and original.id_pv = 3688162

id_pv_nuevo id_pv_viejo cod_tarifa cod_item cod_ind_cob_viejo cod_ind_cob_nuevo
4993162 3688162 5 1 18 1
4993162 3688162 9 1 17 2
4993162 3688162 10 1 16 3
4993162 3688162 11 1 15 4
4993162 3688162 12 1 14 5
4993162 3688162 14 1 13 6
4993162 3688162 16 1 12 7
4993162 3688162 18 1 11 8
4993162 3688162 19 1 10 9
4993162 3688162 30 1 9 10
4993162 3688162 33 1 8 11
4993162 3688162 34 1 7 12
4993162 3688162 36 1 6 13
4993162 3688162 35 1 5 14
4993162 3688162 32 1 4 15
4993162 3688162 42 1 3 16
4993162 3688162 1 1 2 17
4993162 3688162 135 1 34 18
4993162 3688162 25 1 33 19
4993162 3688162 41 1 32 20
4993162 3688162 61 1 31 21
4993162 3688162 62 1 30 22
4993162 3688162 63 1 29 23
4993162 3688162 64 1 28 24
4993162 3688162 65 1 27 25
4993162 3688162 66 1 26 26
4993162 3688162 67 1 25 27
4993162 3688162 68 1 24 28
4993162 3688162 69 1 23 29
4993162 3688162 76 1 22 30
4993162 3688162 205 1 21 31
4993162 3688162 43 1 20 32
4993162 3688162 7 1 19 33
4993162 3688162 7 1 35 33

4993162 3688162 44 1 1 34
4993162 3688162 137 1 37 35
4993162 3688162 207 1 36 36
4993162 3688162 7 1 19 37
4993162 3688162 7 1 35 37


los cuatro registros que referencia se repiten, en teoria solo necesito 2 de ellos.


Muchas gracias de antemano por la 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

Cruce de tablas

Publicado por leonardo_josue (877 intervenciones) el 09/10/2014 19:01:52
Hola Carlos Rojas...

Vayamos por partes, en Base de Datos, un registro está DUPLICADO si, y sólo sí, TODOS SUS CAMPOS SON EXACTAMENTE IGUALES, en tu caso, la consulta en realidad NO MUESTRA REGISTROS REPETIDOS, ya que si observas, al menos uno de los campos tiene un valor diferente: el valor de la última columna NO ES EL MISMO

1
2
3
4
4993162	3688162	7	1	19	33
4993162	3688162	7	1	19	37
4993162	3688162	7	1	35	33
4993162	3688162	7	1	35	37

Esto quiere decir que en alguna de las dos tablas, existen 2 o más registros que cumplen con la condición del JOIN, ahora bien, ¿qué criterio se debe seguir para mostrar sólo uno y no los dos registros? ¿el que tiene el valor mínimo, el que tiene el valor máximo, el primero que aparezca, o el más reciente? esto tienes que determinarlo tú, no nosotros.

Te recomiendo que más que poner el resultado de tu consulta, coloques la estructura de cada una de tus tablas y los datos que tienes en cada una de ellas, y a partir de esos datos que nos digas qué es lo que esperas obtener como salida. De esta manera será más fácil tratar de ayudarte.

Y no olvides mencionar con qué motor de BD's estás trabajando. Aunque la mayoría de los DBMS están basados en SQL, existen diferencias sintácticas muy importantes entre cada uno de ellos.

Saludos
Leo.
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