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

Problea en Consulta SQL

Estas en el tema de Problea en Consulta SQL en el foro de SQL Server en Foros del Web. Hola tengo una consulta sql que me repite mas de una vez la misma fila y no se muy bien como solucionarlo, os pongo el ...
  #1 (permalink)  
Antiguo 28/01/2013, 06:41
Avatar de camarvi24  
Fecha de Ingreso: diciembre-2011
Ubicación: España
Mensajes: 74
Antigüedad: 12 años, 5 meses
Puntos: 1
Problea en Consulta SQL

Hola tengo una consulta sql que me repite mas de una vez la misma fila y no se muy bien como solucionarlo, os pongo el SQL para ver si encontrais donde esta el error.

Gracias

SELECT distinct(REGISTRO1.ID) ,REGISTRO2.ID AS ID2,(REGISTRO1.VALOR) AS VALOR1,(REGISTRO2.VALOR) AS VALOR
FROM REGISTRO_INDICADORES REGISTRO1, REGISTRO_INDICADORES REGISTRO2
WHERE (REGISTRO1.INDICADOR=548 OR REGISTRO1.INDICADOR=549)
AND (REGISTRO2.INDICADOR=542 OR REGISTRO2.INDICADOR=543)
AND REGISTRO1.ANIO=2012 AND REGISTRO2.ANIO=2012
AND REGISTRO1.MES<=12 AND REGISTRO2.MES=12
AND REGISTRO1.CENTRO IN (SELECT COD_CENTRO FROM CENTROS WHERE COD_ZBS=04013)
AND REGISTRO2.CENTRO IN (SELECT COD_CENTRO FROM CENTROS WHERE COD_ZBS=04013)
AND REGISTRO1.VALOR>0 AND REGISTRO2.VALOR>0
order by REGISTRO1.ID
  #2 (permalink)  
Antiguo 28/01/2013, 08:57
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Problea en Consulta SQL

Que extraño que aún con el distinct te arroje valores repetidos pero intenta primero quitandole los paréntesis a tu consulta así:
SELECT distinct REGISTRO1.ID ,REGISTRO2.ID AS ID2, REGISTRO1.VALOR AS VALOR1, REGISTRO2.VALOR AS VALOR
(el resto de la consulta déjalo igual, no se si los paréntesis afecten pero por lo menos yo no los uso y nunca tengo problemas de ese tipo)

Si no funciona entonces haz esto
select distinct a.* from(
TU CONSULTA) a

Con alguna de esas dos opciones debería funcionar, saludos ;)

Última edición por leo_acn; 28/01/2013 a las 09:14
  #3 (permalink)  
Antiguo 28/01/2013, 11:02
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: Problea en Consulta SQL

Cita:
Iniciado por leo_acn Ver Mensaje
Que extraño que aún con el distinct te arroje valores repetidos pero intenta primero quitandole los paréntesis a tu consulta así:
SELECT distinct REGISTRO1.ID ,REGISTRO2.ID AS ID2, REGISTRO1.VALOR AS VALOR1, REGISTRO2.VALOR AS VALOR
(el resto de la consulta déjalo igual, no se si los paréntesis afecten pero por lo menos yo no los uso y nunca tengo problemas de ese tipo)

Si no funciona entonces haz esto
select distinct a.* from(
TU CONSULTA) a

Con alguna de esas dos opciones debería funcionar, saludos ;)
esta regresando valores diferentes porque el distinct esta solo sobre el campo id, si lo hace como mencionas es posible que le regrese los datos como quiere, pero tambien es posible que no, ya que depende de como esten los datos del compañero que hace la pregunta.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 28/01/2013, 11:13
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Problea en Consulta SQL

por eso le decia que quitara el paréntesis a ver si regresa los datos como el quiere ;) gracias por la aclaración

Saludos.
  #5 (permalink)  
Antiguo 29/01/2013, 04:57
Avatar de camarvi24  
Fecha de Ingreso: diciembre-2011
Ubicación: España
Mensajes: 74
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Problea en Consulta SQL

He quitado los parentesis y me sigue duplicando datos.
Os mando los resultados que me da la consulta:

ID ID2 VALOR1 VALOR2
410381 865759 30 16
410381 865760 30 56
410381 882555 30 41
410381 882556 30 163
450712 865759 2 16
450712 865760 2 56
450712 882555 2 41
450712 882556 2 163
450713 865759 38 16
450713 865760 38 56
450713 882555 38 41
450713 882556 38 163
  #6 (permalink)  
Antiguo 29/01/2013, 04:58
Avatar de camarvi24  
Fecha de Ingreso: diciembre-2011
Ubicación: España
Mensajes: 74
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Problea en Consulta SQL

La consulta select distinct a.* from(
TU CONSULTA) a como quedaria, no me quda claro como tengo que hacerlo.

Gracias
  #7 (permalink)  
Antiguo 29/01/2013, 08:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problea en Consulta SQL

Código BASH:
Ver original
  1. ID ID2 VALOR1 VALOR2
  2. 410381 865759 30 16
  3. 410381 865760 30 56
  4. 410381 882555 30 41
  5. 410381 882556 30 163
  6. 450712 865759 2 16
  7. 450712 865760 2 56
  8. 450712 882555 2 41
  9. 450712 882556 2 163
  10. 450713 865759 38 16
  11. 450713 865760 38 56
  12. 450713 882555 38 41
  13. 450713 882556 38 163
En este resultado no existen duplicaciones... Al menos desde el punto de vista del resultado de una consulta, toda vez que el registro se considera duplicado si y sólo si todos los valores de todos los campos se repiten entre dos o más registros, cosa que aquí no está sucediendo.
¿No te estarás refiriendo a los primeros tres campos?
En ese caso, eso no se considera repetición, sino el resultado normal de la consulta.

¿Puedes aclarar ese detalle?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 29/01/2013, 09:13
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Problea en Consulta SQL

Como bien dice gnzsoloyo, los valores no estan duplicados, asi es el resultado que te arroja la consulta, si te fijas bien cada ID tiene mas de un valor en el campo ID2 y asi tambien sucede con el resto de los campos.
Ese resultado te lo mostrará siempre a no ser que quieras sacar por ejemplo el registro con el ID o con el valor mas alto (para que no se "duplique"), pero haciendo esto no mostrará todos los registros y puede que no te sirva para lo que quieres, tal vez si explicas mejor el contexto del select y que es lo que quieres obtener pueda ayudarte mas.
Saludos.
  #9 (permalink)  
Antiguo 30/01/2013, 07:46
Avatar de camarvi24  
Fecha de Ingreso: diciembre-2011
Ubicación: España
Mensajes: 74
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Problea en Consulta SQL

Lo que necesito e por asi decirlo pasar dos veces por la misma tabla en el mismo select, una que me sume los valores de la primera condicion y otra segunda que me de los de la segunda condicion, si hago las dos consultas por separado y las junto con un union me devuelve 273 y 274 para valor1 y valor2 respectivamente.
  #10 (permalink)  
Antiguo 30/01/2013, 07:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problea en Consulta SQL

Lo siento, pero no termino de entender qué tiene que ver hacer las consultas por separado o en un UNION, con el hecho de que salgan supuestos "duplicados".
¿Podrías explicarlo mejor?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fila, registro, select, sql
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 01:02.