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

Porque mi consulta me repite los datos hasta 10 veces

Estas en el tema de Porque mi consulta me repite los datos hasta 10 veces en el foro de SQL Server en Foros del Web. Porque mi consulta me muestra dos datos por cada uno y aveces hasta 10 o 15 veces? Yo ya me canse de probar que es ...
  #1 (permalink)  
Antiguo 15/10/2012, 11:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Porque mi consulta me repite los datos hasta 10 veces

Porque mi consulta me muestra dos datos por cada uno y aveces hasta 10 o 15 veces? Yo ya me canse de probar que es y no encuentro nada. AYUDA!!!
Código SQL:
Ver original
  1. SELECT dbo.Optimas.Linea,dbo.pesos.codoptima, dbo.pesos.Peso,dbo.htargets.Target, dbo.HTargets.Marca, dbo.pesos.Vaso, dbo.Optimas.Tubo, dbo.pesos.fecha
  2.  FROM pesos
  3.  INNER JOIN Optimas ON optimas.codigo = pesos.codoptima
  4.  
  5.  INNER JOIN htargets ON  htargets.codOptima = pesos.codOptima
  6.  
  7.  AND datediff(DAY, htargets.fecha , pesos.fecha ) = 0   AND DATEPART(Hh, pesos.fecha) = DATEPART(Hh, htargets.fecha)
  8.  
  9.  WHERE optimas.codigo IN(82,83,84,85,86,87,88,89,90,92,91,93,95,94,96,98,97,99)AND dbo.htargets.Fecha >='9/10/2012 3:48:00 PM'
  10.  
  11.   AND dbo.htargets.fecha <='9/28/2012 4:09:02 PM' AND target=1000.00 ORDER BY peso ASC



Uploaded with ImageShack.us
  #2 (permalink)  
Antiguo 15/10/2012, 14:14
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 4 meses
Puntos: 40
Respuesta: Porque mi consulta me repite los datos hasta 10 veces

Probablemente te falta una condicion en una de las clausulas On (del Join).
Tu puedes buscar donde falta sistematicamente:

Seguramente la siguiente recuperación es correcta
Código SQL:
Ver original
  1. SELECT * FROM Pesos

Que pasa con la siguiente?
Código SQL:
Ver original
  1. SELECT * FROM Pesos
  2. INNER JOIN Optimas ON optimas.codigo = pesos.codoptima
si existen filas redundantes - te falta una restricción entre estas dos tablas.

Si no - intenta la proxima:
Código SQL:
Ver original
  1. SELECT * FROM Pesos
  2. INNER JOIN Optimas ON optimas.codigo = pesos.codoptima
  3. INNER JOIN htargets ON  htargets.codOptima=pesos.codOptima AND datediff(DAY, htargets.fecha, pesos.fecha)=0 AND DATEPART(Hh, pesos.fecha)=DATEPART(Hh,htargets.fecha)
si ahora hay filas redundantes - entonces aquí te falta la restricción (entre la primera y la tercera o entre la segunda y la tercera).

Espero que te sirva de ayuda.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 16/10/2012, 11:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Porque mi consulta me repite los datos hasta 10 veces

es porque en la de pesos tienes varias veces el mismo codigo para diferentes "vasos" esto es tienes vaso1 vaso2 vaso3 para el mismo producto Ariel, asi que te va a generar 3 veces la informacion.....como dice Gerirefesh necesitas cerrar tu universo digamos con en tu where donde nada mas regreses vaso=1

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 16/10/2012, 12:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 17 años
Puntos: 2
Respuesta: Porque mi consulta me repite los datos hasta 10 veces

Hola Libras,
Lo he hecho como dices vaso=1 pero hace lo mismo: 3 registros por cada uno, y lo he ordenado por fecha ya no por peso
Código SQL:
Ver original
  1. SELECT dbo.Optimas.Linea,dbo.pesos.codoptima, dbo.pesos.Peso,dbo.htargets.Target, dbo.HTargets.Marca, dbo.pesos.Vaso, dbo.Optimas.Tubo, dbo.pesos.fecha
  2.  FROM pesos
  3.  INNER JOIN Optimas ON optimas.codigo = pesos.codoptima
  4.  
  5.  INNER JOIN htargets ON  htargets.codOptima = pesos.codOptima
  6.  
  7.  AND datediff(DAY, htargets.fecha , pesos.fecha ) = 0   AND DATEPART(Hh, pesos.fecha) = DATEPART(Hh, htargets.fecha)
  8.  
  9.  WHERE optimas.codigo IN(82,83,84,85,86,87,88,89,90,92,91,93,95,94,96,98,97,99)AND dbo.htargets.Fecha >='9/10/2012 3:48:00 PM'
  10.  
  11.   AND dbo.htargets.fecha <='9/28/2012 4:09:02 PM' AND dbo.pesos.Vaso=1 AND target=1000.00 ORDER BY fecha



Uploaded with ImageShack.us
  #5 (permalink)  
Antiguo 16/10/2012, 12:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Porque mi consulta me repite los datos hasta 10 veces

Aqui lo que pasa es que en alguna tabla tienes una relacion de muchos a muchos o de uno a muchos con tus codigos haz lo que te recomendaron digamos en este caso algo asi:


select * FROM pesos where codigo=95
select * FROM optimas where codigo=95
select * FROM htargets where codigo=95

y ve cuantos registros tiene cada uno, asi te daras cuenta en cual tabla estas repitiendo los registros y puedas agregar un filtro en tu where :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: repite, select, veces
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 04:52.