Hola a todos hace tiempo que no tengo problemas con esto pero explico lo que estoy haciendo tengo dos tablas sql con la misma estructura una con 3,000 registros y otra 5,000 registros,cree una vista que une ambas tablas con un UNION ahí todo bien ahora bien
tengo que sacar reportes de esta vista por lo cual tengo la siguiente estructura
id_empresa | empresa |mes | total
1 | uno |1 | 500000
1 | uno |1 | 5000
2 | dos |1 | 300000
asi sucesivamente para 8,000 registros
Tengo que hacer reportes de aquí con la siguiente estructura
empresa | Enero | Febrero | Marzo | Abril | Agosto| Noviembre | Diciembre
1 | 2000 | 30121 |5000 |6065|5450 |54068 |7000
2 | 4055 | 40121 |5000 |6065|5450 |54068 |7000
3 | 2089 | 80121 |5000 |6065|5450 |54068 |7000
4 | 3580 | 90121 |5000 |6065|5450 |54068 |7000
Entonces hize lo siguiente
Código PHP:
Ver original<table width="100%" border="1" cellspacing="0">
<thead>
<tr>
<th>Emisor</th>
<?
$meses = mysql_query("SELECT mes,anio FROM meses WHERE anio = 2012");//Saco los meses de una tabla para poderlos poner en las cabezeras $m_ulti = mysql_query("SELECT count(mes) as ultimo FROM meses WHERE anio = 2012"); $m_ulti=$m_ulti['ultimo'];//saco el ultimo mes para el ciclo
?>
<th><?= $m['mes'];?></th>
<?
}
?>
</tr>
</thead>
<tbody>
<?php
for ($x=1; $x <=8 ; $x++) { // hago el ciclo de las 8 empresas
$emi = mysql_query("SELECT emisor FROM emisores WHERE id_emisor = $x");//Obtengo el nombre de la empresa ?>
<tr>
<td>
<?php echo $emi['emisor'];// Lo imprimo en la primera columna ?>
</td>
<?
for ($n=1; $n <=$m_ulti ; $n++) { //empiezo el ciclo para los meses y empezar a calcular los totales por empresa y por mes
$importe = mysql_query("SELECT sum(saldo_pendiente) as imp FROM factura_general WHERE id_emisor = $x and mes = $n and anio=2012"); ?>
<td><? echo $imp['imp'];// La imprimo ?></td>
<?
}
?>
</tr>
<?php//Cierro el tr para que empieze la otra fila
}
?>
</tbody>
</table>
Pero esto se tarda mucho que me sale el fatal_error por el tiempo máximo de ejecución que se supera que son 30 seg
Que podría hacer para acelerar esta consulta ya que tarda mas de 30 seg??
Gracias
Saludos