Hola a todos.
Estoy trabajando en una consulta o más bien en varias consulatas haciendo uso del anidamiento de ciclos. Aquí les muestro el código:
Código PHP:
<?php
/**
* @author Ernesto
* @copyright 2011
*/
include ("conexion/conexion.php");
mssql_query("SET ANSI_NULLS ON");
mssql_query("SET ANSI_WARNINGS ON");
set_time_limit("120");
$_pagi_empresa = mssql_query("SELECT Empresas.DEMPRESA AS NEMPRESA
FROM Sector RIGHT OUTER JOIN
Mod444 ON Sector.SECTOR = Mod444.SECTOR LEFT OUTER JOIN
Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN
Programa ON Mod444.PROGRAMA = Programa.PROGRAMA LEFT OUTER JOIN
Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN
Empresas ON Mod444.EMPRESA = Empresas.EMPRESA
GROUP BY Empresas.DEMPRESA
ORDER BY Empresas.DEMPRESA");
$total = mssql_num_rows($_pagi_empresa);
if (mssql_num_rows($_pagi_empresa)){
echo "Fecha Reporte :".date("m/d/y");
echo "<br>";
echo "<table> \n";
echo "<tr>
<th>Empresa</th>
<th>Sector</th>
<th>Municipio</th>
<th>Programa</th>
<th>Indicador</th>
<th>Plan Mes</th>
<th>Real Mes</th>
<th>Porciento</th>
<th>Plan Acumulado</th>
<th>Real Acumulado</th>
<th>Porciento Actual</th>
<th>Real Año Anterior</th>
<th>Plan Año Actual</th>
<th>Relación</th></tr>\n";
while ($registro = mssql_fetch_array($_pagi_empresa))
{
//mssql_data_seek($_pagi_sql, $i);
//$row = mssql_fetch_array($_pagi_sql);
$_nempresa = $registro["NEMPRESA"];
echo "<tr><td>".$registro["NEMPRESA"]."</td>";
/*"<td>".$registro["DSECTOR"]."</td>".
"<td>".$registro["DPROGRAMA"]."</td>".
"<td>".$registro["DMUNI"]."</td>".
*/
"</td></tr> \n";
$_pagi_sector = mssql_query("SELECT Empresas.DEMPRESA AS NEMPRESA, Sector.DSECTOR
FROM Sector RIGHT OUTER JOIN
Mod444 ON Sector.SECTOR = Mod444.SECTOR LEFT OUTER JOIN
Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN
Programa ON Mod444.PROGRAMA = Programa.PROGRAMA LEFT OUTER JOIN
Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN
Empresas ON Mod444.EMPRESA = Empresas.EMPRESA
GROUP BY Empresas.DEMPRESA, Sector.DSECTOR
ORDER BY Empresas.DEMPRESA");
while ($reg_sector = mssql_fetch_array($_pagi_sector))
{
$_dsector = $reg_sector["DSECTOR"];
echo "<tr><td>".$reg_sector["DSECTOR"]."</td>";
"</td></tr> \n";
$_pagi_mcpio = mssql_query("SELECT Empresas.DEMPRESA AS NEMPRESA, Sector.DSECTOR, Municipios.DMUNI
FROM Sector RIGHT OUTER JOIN
Mod444 ON Sector.SECTOR = Mod444.SECTOR LEFT OUTER JOIN
Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN
Programa ON Mod444.PROGRAMA = Programa.PROGRAMA LEFT OUTER JOIN
Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN
Empresas ON Mod444.EMPRESA = Empresas.EMPRESA
GROUP BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI
ORDER BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI");
while ($reg_mcpio = mssql_fetch_array($_pagi_mcpio))
{
$_dmuni = $reg_mcpio["DMUNI"];
echo "<tr><td> </td><td> </td><td>".$reg_mcpio["DMUNI"];
echo "</td></tr> \n";
// Programas
$_pagi_prog = mssql_query("SELECT Empresas.DEMPRESA AS NEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA
FROM Sector RIGHT OUTER JOIN
Mod444 ON Sector.SECTOR = Mod444.SECTOR LEFT OUTER JOIN
Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN
Programa ON Mod444.PROGRAMA = Programa.PROGRAMA LEFT OUTER JOIN
Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN
Empresas ON Mod444.EMPRESA = Empresas.EMPRESA
GROUP BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA
ORDER BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA");
while ($reg_prog = mssql_fetch_array($_pagi_prog))
{
$_dprograma = $reg_prog["DPROGRAMA"];
echo "<tr><td> </td><td> </td><td> </td><td>".$reg_prog["DPROGRAMA"];
echo "</td></tr> \n";
// Los Indicadores
$_pagi_ind = mssql_query("SELECT Empresas.DEMPRESA AS NEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA, Filas444.[Desc] AS Descrip,
Mod444.[PLAN MES] AS PlanMes, Mod444.[REAL MES] AS RealMes, Mod444.PORC, Mod444.[PLAN ACUM] AS PlanAcum,
Mod444.[REAL ACUM] AS RealAcum, Mod444.[PORC AC] AS PorcAC, Mod444.[REAL AÑO ANT] AS RealAA, Mod444.[PLAN AÑO ACT] AS PlanAA,
Mod444.REL
FROM Sector RIGHT OUTER JOIN
Mod444 ON Sector.SECTOR = Mod444.SECTOR LEFT OUTER JOIN
Filas444 ON Mod444.FILA = Filas444.Filas LEFT OUTER JOIN
Programa ON Mod444.PROGRAMA = Programa.PROGRAMA LEFT OUTER JOIN
Municipios ON Mod444.MUNI = Municipios.MUNI LEFT OUTER JOIN
Empresas ON Mod444.EMPRESA = Empresas.EMPRESA
GROUP BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA, Filas444.[Desc], Mod444.[PLAN MES], Mod444.[REAL MES],
Mod444.PORC, Mod444.[PLAN ACUM], Mod444.[REAL ACUM], Mod444.[PORC AC], Mod444.[REAL AÑO ANT], Mod444.[PLAN AÑO ACT], Mod444.REL,
Filas444.Filas HAVING (Empresas.DEMPRESA = 'CONSOLIDADO EMPRESAS') AND (Municipios.DMUNI = 'BARACOA') AND (Programa.DPROGRAMA = 'CONSOLIDADO PROVINCIAL') ORDER BY Empresas.DEMPRESA, Sector.DSECTOR, Municipios.DMUNI, Programa.DPROGRAMA, Filas444.Filas");
while ($reg_ind = mssql_fetch_array($_pagi_ind))
{
echo "<tr><td> </td><td> </td><td> </td><td> </td><td>".$reg_ind["Descrip"];
echo "<td>".$reg_ind["PlanMes"]."</td>";
}
}
}
}
// "</td></tr> \n";
}
}
echo "</table> \n";
?>
Lo que quiero hacer es algo al estilo de los informes que genera, por ejemplo, access. En este caso al ir pasando de página a página debe mantenerse el emcabezado de e ir cambiando el Municipio, el Programa y el valor de los Indicadores por cada uno de ellos, es decir no el nombre de los indicadores, sino el valor, los indicadores son los mismos. Slolo cambia el valor.
De la manera que esta hecho, la que muestro anteriormente, se repiten los mismos valores de los indicadores para un solo municipio, los demás no salen.
Espero me hayan enetendido.
Disculpen por lo largo de el código.
Muachas Gracias.