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

Problema con consulta SQL

Estas en el tema de Problema con consulta SQL en el foro de SQL Server en Foros del Web. Hola, tengo un problema con mi consulta, lo que quiero es seleccionar los pesos de la tabla pesosy los targets, es decir si los pesos ...

  #1 (permalink)  
Antiguo 14/06/2010, 15:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Problema con consulta SQL

Hola, tengo un problema con mi consulta, lo que quiero es seleccionar los pesos de la tabla pesosy los targets, es decir si los pesos devueltos por la db son de 1000 aprocimadamente, entonces en la tabla targets debe existir un target, de 1000 de esa fecha y de ese rango de hora con el mismo codigo, el problema es que mi consulta me imprime los pesos correctos pero no los targets correctos, es decir me imprime todos los targets de la tabla correspondientes a ese codigo por ejemplo:



La segunda despues de donde dice L09N Son los pesos, y lo siguernte es mi campo llamado target, como se ve cambia a 550 ya que es un valor que esta en la tabla correspondienrte al mismo codigo pero en otro horario, y asi mismo la marca igual cambia, no entiendo por que. Mi consulta es esta:
Código SQL:
Ver original
  1. SELECT h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L09N' AND o.tubo LIKE '%' AND p.fecha BETWEEN '2010-06-14 14:00' AND '2010-06-14 14:30' AND p.hora='14:00 - 14:30'AND h.codoptima = o.codigo
Saludos
editado:
Hola ya encontre el error, me falto agregar la hora:
Código SQL:
Ver original
  1. SELECT SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L09N' AND o.tubo LIKE '%' AND p.fecha BETWEEN '2010-06-14 14:00' AND '2010-06-14 14:30' AND p.hora='14:00 - 14:30'AND h.codoptima = o.codigo AND h.hora='14:00 - 14:30'
SALUDOS Y GRACIAS

Última edición por th3r0rn; 17/06/2010 a las 10:07
  #2 (permalink)  
Antiguo 15/06/2010, 08:54
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problema con consulta SQL

Bueno si... estaba medio confuso tu problema jajaja... Saludos espero te vaya bien...
  #3 (permalink)  
Antiguo 16/06/2010, 09:30
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Holaaaaa, perdon pero ahora que consulte nuevos datos me muestra diferentes targets y marcas :(
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L15N' AND o.tubo LIKE 'A' AND p.fecha BETWEEN '2010-06-16 10:00' AND '2010-06-16 10:30' AND p.hora='10:00 - 10:30'AND h.codoptima = o.codigo AND h.hora='10:00 - 10:30'
que esta mal en mi query??
  #4 (permalink)  
Antiguo 16/06/2010, 09:38
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
De acuerdo Respuesta: Problema con consulta SQL

Prueba asi:
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,
  2. p.hora,p.peso,p.vaso,p.fecha,o.linea,o.tubo
  3. FROM optimas AS o
  4. INNER JOIN pesos AS p ON o.codigo = p.codOptima
  5. INNER JOIN htargets AS h ON o.codigo = h.codoptima
  6. WHERE o.linea = 'L15N'
  7. AND o.tubo LIKE 'A%'
  8. AND p.fecha >= '2010-06-16 10:00' AND p.fecha <= '2010-06-16 10:30'
  9. AND p.hora='10:00 - 10:30'
  10. AND h.hora='10:00 - 10:30'
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 16/06/2010, 12:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

me da error:
Msg 208, Level 16, State 1, Line 2
Invalid object name 'htargets'.
  #6 (permalink)  
Antiguo 16/06/2010, 14:02
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Verifica el nombre de tu tabla.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 16/06/2010, 14:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, me siguen saliendo todos los targets, dejo una captura en el siguiente link:
http://omploader.org/vNG5vZA
Saludos
  #8 (permalink)  
Antiguo 16/06/2010, 15:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Que deberia salir?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 16/06/2010, 15:11
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, si te fijas en la columna "pesos" hay pesos de un kilo aproximadamente, es decir de 1000kg esos son los pesos de las bolsas llenadas, el target es el peso deseado a producir, este es un sistema para monitoreo de pesos, si te das cuenta los pesos de esa corrida que estoy consultando son de 1000 entonces el target solo debe ser ed 1000, las variaciones de los pesos no importa pero nos podemos dar cuenta exactamente de cuantos kilos se esta produciendo, necesito el target correcto a esa corrida para poder sacar unos calculos matematicos, el problema aki es que me esta devolviendo practicamente todos los targets que hay en esa tabla de ese codigo de empaquetadora al igual que todas las marcas dejo la siguiente captura para aclarar mas la logica:
http://omploader.org/vNG5vcA
  #10 (permalink)  
Antiguo 16/06/2010, 15:35
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

¿Dónde indicas que son 1000 kilos?
Yo pondria en el WHERE: peso >= target
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 16/06/2010, 15:46
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

no puedo poner >= por qu el dato que necesito es exacto y pueden existir targets de 1500 o 2000 yo necesito el dato extacto, y en el reportador yo no indico el pedo, solo indico
"muestrame lo que produjo y el peso que produjo asi como la marca y l target de las 10:00 a las 10:30 horas, en ese periodo pudo haber producido pesos de 1500 o de 2000 la consulta me tiene que decir realmente que se produjo a esa hora. El usuario no sabe por que ese es el fin saber que dia y a que hora se produjo tal cosa
  #12 (permalink)  
Antiguo 16/06/2010, 16:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Parece que falta hacer un join por el campo marca.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #13 (permalink)  
Antiguo 17/06/2010, 09:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, lo deje asi pero no se si me este extrayenfo todos los datos completos o hay alguna otra limitante=? este me da el target y marca correct:
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo
  2. FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L15N'
  3. AND o.tubo LIKE 'A' AND p.fecha BETWEEN '2010-06-16 10:00' AND '2010-06-16 10:30' AND h.fecha BETWEEN '2010-06-16 10:00' AND '2010-06-16 10:30' AND p.hora='10:00 - 10:30'
  4. AND h.codoptima = o.codigo AND h.hora='10:00 - 10:30'
Scren:
http://omploader.org/vNG55Ng
Saludos
  #14 (permalink)  
Antiguo 17/06/2010, 11:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Bien por ti, pero veo que no estas siguiendo las mejoras que hice a tu query.
Usar INNER JOIN, tu like no esta bien, usa >= o <= para comparar fechas no between.
En fin, la decision es tuya.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #15 (permalink)  
Antiguo 17/06/2010, 15:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, por que es mejor con >= que utilizando between??
Otra duda, como le puedo hacer para que me diga el total de todos los registros de el campo peso de la tabla pesos que selecciona en esa consulta? es decir :
Código SQL:
Ver original
  1. SELECT COUNT(peso) AS peso FROM pesos
ya intente ponerlo al principio de mi consulta pero me da error :(
  #16 (permalink)  
Antiguo 17/06/2010, 16:16
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Tienes que agrupar, o en todo caso obten el total de registros en una subconsulta. En realidad no tengo claro que quieres hacer, sino pon un ejemplo.
Sobre between aqui esta el articulo que recomendo nuestro querido amigo Isaias alguna vez.
Manejo de fechas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #17 (permalink)  
Antiguo 17/06/2010, 16:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, como dije antes esa consulta me selecciona muchas cosas entre ella los registros de la columna peso de la tabla pesos pero lo que quiero es que me de el total de cuantos registros son de esa columna "solo los que cumplen esa condicion del where. Saludos
Código SQL:
Ver original
  1. SELECT    COUNT(peso)AS pesos,h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo
  2. FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L15N'
  3. AND o.tubo LIKE 'A' AND h.fecha BETWEEN '2010-06-16 10:00' AND '2010-06-16 10:30' AND p.hora='10:00 - 10:30'
  4. AND h.codoptima = o.codigo AND h.hora='10:00 - 10:30'
  #18 (permalink)  
Antiguo 17/06/2010, 17:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

COUNT es una funcion agregada, eso quiere decir que te devuelve un numero de un conjunto de registros agrupados.
Muestrame un ejemplo de tu conjunto de registros y yo te digo como hacerlo.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #19 (permalink)  
Antiguo 18/06/2010, 08:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, aki dejo la captura de pantalla de la consulta
http://omploader.org/vNG9iMA
Saludos
  #20 (permalink)  
Antiguo 18/06/2010, 08:44
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

OK, eso esta claro.
Ahora, tu quieres que aparezca 2531713 en cada registro del resultado de tu query?
Como ves sigo sin entender. Tienes que poner un ejemplo de como quieres que salga.
Agarra un excel y ahi pon datos de ejemplo, y muestra esa pantalla.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #21 (permalink)  
Antiguo 18/06/2010, 09:29
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, no, lo que necesito no es el total de todos los registros, necesto solo el total de los registros de la tabla pesos, es decir cuantos registros pero solo el total de los que devuelve la consulta por ejemplo:
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha, o.linea,o.tubo FROM pesos AS p, optimas AS o,htargets AS h WHERE o.codigo = p.codOptima AND o.linea = 'L01S' AND o.tubo LIKE '%' AND p.fecha BETWEEN '2010-06-18 09:00' AND '2010-06-18 09:30' AND p.hora='9:00 - 9:30'AND h.codoptima = o.codigo AND h.hora='9:00 - 9:30'
Solo necesito el total de los registros de esa columna pesos pero solo los que me devuelve esa consulta y no de manera genereal, es decir aki dejo una captura de pantalla de lo q me da la consulta, lo que quiero es que en todos los regixstros dela tabla peso me diga en total cuantos registros hay en esa tabla correspondiente a esa consulta:
http://omploader.org/vNG9iaw
Saludos
  #22 (permalink)  
Antiguo 18/06/2010, 12:09
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Tu quieres esto?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #23 (permalink)  
Antiguo 18/06/2010, 14:03
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Exacto, si son solo 10 datos que me diga que son 10 datos, asi yo digo son 10 bolsas de ariel de 500 gramos, aun que en la base de datos existan 20mil yo solo quiero el total que se produjo digamos en 10 minutos y algo, tal como lo marco en mi condicion.
Por cierto, como obtuviste esos datos? XD
  #24 (permalink)  
Antiguo 18/06/2010, 14:09
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Prueba asi:
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,
  2. p.hora,p.peso,p.vaso,p.fecha,o.linea,o.tubo
  3. INTO #temp
  4. FROM pesos AS p, optimas AS o,htargets AS h
  5. WHERE o.codigo = p.codOptima AND o.linea = 'L01S'
  6. AND o.tubo LIKE '%'
  7. AND p.fecha BETWEEN '2010-06-18 09:00' AND '2010-06-18 09:30'
  8. AND p.hora='9:00 - 9:30'
  9. AND h.codoptima = o.codigo AND h.hora='9:00 - 9:30'
  10.  
  11. SELECT *,(SELECT COUNT(1)total FROM #temp) FROM #temp
Ah, los datos los obtuve por medio de la tecnologia ;)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #25 (permalink)  
Antiguo 18/06/2010, 14:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Hola, me sale esto :x
Msg 2705, Level 16, State 3, Line 1
Column names in each table must be unique. Column name 'CODOPTIMA' in table '#temp' is specified more than once.
  #26 (permalink)  
Antiguo 18/06/2010, 14:40
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Ponle un alias a la columna P.CODOPTIMA.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #27 (permalink)  
Antiguo 18/06/2010, 15:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

pero si el alias ya lo tiene en la consulta que me diostes es
Código SQL:
Ver original
  1. pesos AS p
  #28 (permalink)  
Antiguo 18/06/2010, 15:48
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Problema con consulta SQL

Doctor pon asi: h.codoptima AS codoptimaT
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #29 (permalink)  
Antiguo 21/06/2010, 07:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problema con consulta SQL

Msg 208, Level 16, State 1, Line 2
Invalid object name 'h.codoptima'.
:(
Código SQL:
Ver original
  1. SELECT h.hora,h.marca,h.codoptima,h.target,P.CODOPTIMA,O.CODIGO,p.hora,p.peso,p.vaso,p.fecha,o.linea,o.tubo INTO #temp
  2. FROM pesos AS p, optimas AS o,htargets AS h, h.codoptima AS codoptimaT
  3. WHERE o.codigo = p.codOptima AND o.linea = 'L01S'
  4. AND o.tubo LIKE '%' AND p.fecha BETWEEN '2010-06-18 09:00' AND '2010-06-18 09:30'
  5. AND p.hora='9:00 - 9:30' AND h.codoptima = o.codigo AND h.hora='9:00 - 9:30'
  6.  SELECT *,(SELECT COUNT(1)total FROM #temp) FROM #temp
  #30 (permalink)  
Antiguo 21/06/2010, 07:57
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Problema con consulta SQL

que le pongas un alias en el Select :) no en el From :)

Etiquetas: 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 16:55.