Hola @gldelossantos de primeras muchas gracias.
Ya mas o menos he encontrado la manera.. pero ahora tengo problemas para mostrarlo como yo quiero.
Tengo esta base de datos:
Tengo que obtener la MEDIA_TOTAL de cada pregunta (de cada ámbito), es decir la media total para pregunta1, media total para pregunta2 etc..
La obtengo así:
Código PHP:
Ver original// CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
$sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
$cuenta = $datos4[0];
}
// SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
$sql5 = ("SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
$mediatotal = $datos5[0]/$cuenta;
}
(recordemos que la media son, la suma de los datos, dividido entre el numero de datos que hay)
es decir, con la primera consulta:
SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'
Cuento cuantos datos me saca para saber entre cuanto tengo que dividir luego la media, filtrando para que sea ESA PREGUNTA en ESE ÁMBITO.
con la segunda consulta:
SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'
cojo todas las medias de ESA PREGUNTA y de ESE ÁMBITO y las sumo.
Después hago la operación para que me divida la media:
$mediatotal = $datos5[0]/$cuenta;
Así obtengo la media_total de la Pregunta1 ambito1, pregunta2 ambito1, etcetc..
El problema es que ahora tengo que mostrar las medias y me gustaría que saliese en esta tabla
Despues de las filas de pregunta1 una fila que fuese, Media total pregunta 1, despues de todas las preguntas 2 una fila que fuese, Media total pregunta 2,
y así sucesivamente.
El caso es que voy imprimiendo fila a fila y nose como hacerlo..
el código que tengo ahora es:
Código PHP:
Ver original<?php
include('conex.php');
// SELECCIONAMOS EL ÁMBITO.
$ambitos = ("SELECT ambitos.codAmbito, ambitos.descripAmbito FROM ambitos ORDER BY codAmbito");
echo "<table border=\"1\"><tr><td> Datos Encuesta </td> <td> Medias Totales </td></tr><tr><td>";
// MIENTRAS HAYA ÁMBITO IMPRIME.
// IMPRIMIMOS EL TÍTULO Y ABRIMOS LA TABLA.
echo "<b>Ambito: </b>".$datos['descripAmbito'];
echo "<table border=\"1\"><tr><td><b>Centro</b></td><td><b>Numero Pregunta</b></td><td><b>Evaluador1</b></td><td><b>Evaluador2</b></td><td><b>Evaluador3</b></td><td><b>opinPos</b></td><td><b>opinNeg</b></td><td><b>Media</b></td><td><b>Ponderacion</b></td></tr>";
// SELECIONAMOS TODOS LOS DATOS DE ENCUESTAS CUANDO TENGAN ESE CÓDIGO DE AMBITO.
$encuestas = ("SELECT descripAmbito, descripCentro, encuestas.codAmbito, encuestas.codCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg, media
FROM ambitos, centros, encuestas
WHERE ambitos.codAmbito = '".$datos['codAmbito']."'
AND ambitos.codAmbito = encuestas.codAmbito
AND centros.codCentro = encuestas.codCentro
ORDER BY encuestas.numeroPregunta");
// MIENTRAS HAYA RESULTADOS IMPRIME.
// SELECIONAMOS LOS PORCENTAJES PARA CALCULAR LA PONDERACIÓN.
$porcentajes = ("SELECT porcentaje FROM ponderaciones WHERE codCentro = '".$datos2['codCentro']."'");
// MIENTRAS HAYA DATOS EN PONDERACIONES IMPRIME.
$ponderacion = round($datos2['media'] * $datos3['porcentaje']); }
// RELLENAMOS LA TABLA CON LOS DATOS.
echo "<tr>";
echo "<td>".$datos2['descripCentro']." </td>";
echo "<td>".$datos2['numeroPregunta']." </td>";
echo "<td>".$datos2['evaluador1']." </td>";
echo "<td>".$datos2['evaluador2']." </td>";
echo "<td>".$datos2['evaluador3']." </td>";
echo "<td>".$datos2['opinPos']." </td>";
echo "<td>".$datos2['opinNeg']." </td>";
echo "<td>".$datos2['media']."</td>";
echo "<td>".$ponderacion."</td>";
echo "</tr>";
// CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
$sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
$cuenta = $datos4[0];
}
// SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
$sql5 = ("SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
$mediatotal = $datos5[0]/$cuenta;
}
}
// CERRAMOS LA TABLA.
echo "</table>";
echo "<br>";
}
// IMPRIMIMOS LAS MEDIAS TOTALES.
echo "</td><td> aqui va la tabla de las medias totales</td>";
echo "</tr></table>";
?>
Me serviría mostrar despues de cada numero de preguntas (es decir, despues de las 4 pregunta1, luego despues de las 4 pregunta2) mostrar una fila que fuese, Media Total Pregunta 1 : 'x' .
o tambien,
mostrar esos datos para que me muestre una tabla por cada ámbito con 1 fila por cada pregunta en la que muestre el número de pregunta y la media total.
Si no entiendes especifícame mejor que partes son las que no entiendes a ver como te podría explicar mejor, ok?