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

Necesito ayuda con una consulta

Estas en el tema de Necesito ayuda con una consulta en el foro de Bases de Datos General en Foros del Web. Tengo una tabla que se llama Invoice, la cual para no alargar tanto la pregunta digamos que contiene solo los siguientes campos y no tiene ...
  #1 (permalink)  
Antiguo 15/03/2010, 08:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación Necesito ayuda con una consulta

Tengo una tabla que se llama Invoice, la cual para no alargar tanto la pregunta digamos que contiene solo los siguientes campos y no tiene referencia a ninguna otra tabla:

id (Primary Key)
categoria (F/D) <--- solo existen estas categorias
commodity <---- es como un tipo de codigo de producto
valor_total <----- total de linea


digamos q la tabla esta llena de la siguiente manera:


ID CATEGORIA COMMODITY VALOR TOTAL
--------------------------------------------------------------------------
1 D 1234 2200
2 D 6548 1800
3 F 6548 800
4 D 9565 700
5 F 9565 600
6 F 7856 2850
7 D 6541 2400
8 D 1232 2600



Como puedo hacer una consulta que haga lo siguiente:

Que me devuelva una tabla con los mismos campos pero que solo me tire
los valores por COMMODITY que tengan un monto de VALOR TOTAL mayor a 2500 y aparte de eso existe la condicion de que si un mismo COMMODITY tiene las dos categorias (F y D) esos valores juntos tienen que sumar los dos, mas de 2500 para poder salir en el resultado.

Eso entonces tambien da la posibilidad de que si un ID digamos no es mayor a 2500 pero existe otro valor de otra categoria con el mismo COMMODITY y al sumarlo con este otro da mas de 2500, eso implica en que puede salir en la tabla.



Esta seria la tabla con el querry ya realizado y el resultado que quiero obtener, tomando de base la tabla q puse al inicio:




ID CATEGORIA COMMODITY VALOR TOTAL
--------------------------------------------------------------------------
2 D 6548 1800
3 F 6548 800
6 F 7856 2850
8 D 1232 2600






Obviamente la tabla con la que estoy trabajando es mucho mas grande y con otros campos, pero es casi exactamente la misma logica de lo que necesito obtener. Les agradeceria dem la ayuda.
  #2 (permalink)  
Antiguo 15/03/2010, 08:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Necesito ayuda con una consulta

Perdon con las tablas, se les fue el formato, pero espero que entiendan la idea, ahi cada fila esta separada al menos por un espacio para que sepan distinguir cual campo es cual.. Gracias de antemano para aquel q me ofrezca una ayudota
  #3 (permalink)  
Antiguo 15/03/2010, 08:48
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: Necesito ayuda con una consulta

La consulta seria algo asi:

Código SQL:
Ver original
  1. SELECT * FROM  `Invoice` WHERE  `categoria` LIKE  'D' OR `categoria` LIKE  'F' AND  `COMMODITY` >  '2500'

Espero que te sirva. xD
  #4 (permalink)  
Antiguo 15/03/2010, 09:20
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Necesito ayuda con una consulta

SELECT * FROM Invoice WHERE (categoria LIKE 'D' OR categoria LIKE 'F') AND valor_total > 2500


Gracias por la ayuda, lo que pasa con ese Select, es que solo me devolveria las filas que tengan valor total mayor a 2500.

Pero eso no es lo que necesito, es muy parecido pero no es el resultado que ando buscando.
Ocupo que aparte de que me tire las filas que contegan valor mayor a 2500, me valide que si dos filas por ejemplo tienen el mismo COMMODITY y diferentes categorias (Una F y otra D), dentro del Select valide que si el valor total de estas dos filas al sumarlo de mas de 2500, entre en el resultado de la tabla.

En la tabla que puse arriba con el resultado que quiero no se si puedes ver que hay filas que tienen valor menor a 2500 y estan en el resultado del query, esto porq al tener el mismo commodity y al sumarlo dio mas de 2500.


Lo dificil de esta consulta es como validar esa suma, para todos los commoditis, ya que no se puede hacer un ciclo que valide campo por campo, o al menos no se como hacerlo.

Por eso esta pensando si lo mejor que tengo que hacer es un select, o un procedimiento almacenado. Escucho opciones.

Y muchas gracias a Kalvin por responder tan rapido ;)
  #5 (permalink)  
Antiguo 15/03/2010, 09:25
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 17 años, 6 meses
Puntos: 22
Respuesta: Necesito ayuda con una consulta

Bueno en este caso creo que tendrias hacer hacer dos cunsultas, primero una para listar todos tus registros y luego buscar repeticiones de comodifity (alguna expresion PHP) y luego hacer una nueva validacion si la suma de los elementos con el mismo comodifyti es mayor que 2500. xD
  #6 (permalink)  
Antiguo 15/03/2010, 09:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Necesito ayuda con una consulta

con que base de datos trabajas?
mysql? postgres? oracle?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 15/03/2010, 10:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Necesito ayuda con una consulta

prueba esto

Código SQL:
Ver original
  1. SELECT d.*
  2. FROM dacuna AS d
  3. INNER JOIN
  4. (SELECT comodity,SUM(total) AS suma FROM dacuna GROUP BY comodity) AS d1
  5. ON d.comodity=d1.comodity
  6. WHERE d1.suma > 2500;


reemplaza el nombre de la tabla por el nombre real de tu tabla.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 15/03/2010 a las 10:20
  #8 (permalink)  
Antiguo 15/03/2010, 10:43
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Necesito ayuda con una consulta

Demasiadas gracias me funciono a la perfeccion!! ;)
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:01.