Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2011, 12:54
Avatar de omar_gutierrez
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.