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

Como hacer una consulta como esta?

Estas en el tema de Como hacer una consulta como esta? en el foro de Mysql en Foros del Web. Hola foro, en una aplicacion web hago una consulta para mostrar estadisticas de materiales capturados (importe $$$, cantidades UMT, UMC, etc.), la consulta general estuvo ...
  #1 (permalink)  
Antiguo 14/04/2011, 12:54
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Pregunta Como hacer una consulta como esta?

Hola foro, en una aplicacion web hago una consulta para mostrar estadisticas de materiales capturados (importe $$$, cantidades UMT, UMC, etc.), la consulta general estuvo facil de hacer, pero ahora necesito hacer una por fechas, solo que la fecha no se encuentra en la misma tabla; les explico:

2 tablas son las que participaran en esta consulta por rango de fechas: "pedimento_info" y "partidas"; en la tabla pedimento_info esta la informacion basica del pedimento; en la tabla partidas estan las partidas, que son la descripcion del material entrante. Las fecha se encuentra en la tabla de pedimento_info, y el resultado requerido en la tabla partidas.

Esta es la consulta que use para mostrar la informacion general:

Código PHP:
    $print mysql_query("SELECT DISTINCT DESCRIPCION, SUM(IMPORTE) IMPORTE, SUM(IMPORTE_A1) IMPORTE_A1, SUM(CANTIDAD_UMC) CANTIDAD_UMC, SUM(CANTIDAD_UMT) CANTIDAD_UMT, UMC, UMT FROM partidas GROUP BY DESCRIPCION ORDER BY IMPORTE DESC LIMIT $inicio, 1"); 
Esta consulta hace lo siguiente:

Buscar la descripcion, sumar los valores especificados, eliminar registros repetidos, y mostrarlo en pantalla (si por ejemplo el pedimento 123 tiene 3 partidas, y 2 de ellas tienen "POLIPROPILENGLICOL", no es necesario mostrarlo 2 veces en la estadistica, en lugar de eso, sumo todos los valores y muestro cuanto hay de cada cosa).

Y masomenos los pasos para mostrar lo mismo pero con un rango de fechas es el siguiente:

1.- El usuario introduce un rango de fechas ejemplo: de 2010-01-01 a 2010-12-31.

2.- Buscar en la tabla "pedimento_info" los numeros de pedimento "NUM_PEDIMENTO" que esten dentro de este rango. Para esto uso:

Código PHP:
$rango_fechas_pedimentos mysql_query("SELECT NUM_PEDIMENTO FROM pedimento_info WHERE FECHAS_PAGO >= DATE('$inicio') AND FECHAS_PAGO <= DATE('$fin')"); 
3.- Del rango obtenido, buscar todas las partidas que coinsidan con los numeros de pedimentos obtenidos en la consulta anterior (para identificar a que pedimento pertenece cada partida, introdusco el numero de pedimento en la tabla partida; aclaro que un pedimento puede tener mas de una partida). De aqui para abajo, ya no se como seguirle. Lo he intentado con areglos y nomas no.

4.- Una vez obteniendo todas las partidas, el paso final seria hacer lo mismo que en la consulta general, obviamente y unicamente con el resultado de la consulta del paso 3.

La verdad no se si esta sea la manera correcta de hacer lo que requiero (aunque la verdad pienso que no), no se si todo este rollo que les explique se pueda simplificar a una sola consulta.

Espero puedan ayudarme y gracias de antemano.
  #2 (permalink)  
Antiguo 14/04/2011, 14:37
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Como hacer una consulta como esta?

Ok, para los interesados:

Despues de un buen rato en la consola de MySQL y leer de INNER JOIN he logrado hacer esto:

Ya pude sacar los materiales de la tabla "partidas" que considan con el rango de fechas introducidas por el usuario (recuerden que la fecha se guarda en "pedimento_info", para eso hice esta consulta:

Cita:

SELECT partidas.NUM_PEDIMENTO,
pedimento_info.FECHAS_PAGO,
partidas.DESCRIPCION,
pedimento_info.NUM_PEDIMENTO

FROM partidas, pedimento_info

WHERE partidas.NUM_PEDIMENTO = pedimento_info.NUM_PEDIMENTO

AND pedimento_info.FECHAS_PAGO >= DATE('fechainicial')

AND pedimento_info.FECHAS_PAGO <= DATE('fechafinal')
Si pude despues de todo, solo me falta el ultimo paso: hacer las sumas de los importes, eliminar las "DESCRIPCIONES" repetidas.
  #3 (permalink)  
Antiguo 14/04/2011, 15:10
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Como hacer una consulta como esta?

Estoy intentandolo asi:

Cita:
SELECT partidas.NUM_PEDIMENTO, pedimento_info.FECHAS_PAGO, partidas.DESCRIPCION, pedimento_info.NUM_PEDIMENTO FROM partidas, pedimento_info, SUM(partidas.IMPORTE) WHERE partidas.NUM_PEDIMENTO = pedimento_info.NUM_PEDIMENTO AND pedimento_info.FECHAS_PAGO >= DATE('2010-01-01') AND pedimento_info.FECHAS_PAGO <= DATE('2011-01-01')
Pero no me sale, alguna idea?

Etiquetas: nosequeponer
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 07:56.