Entre las muchas posibilidades que nos brinda SQL, una es
agrupar registros y obtener información resumida de tablas.
En nuestro problema, un listado interesante sería mostrar
la cantidad de alumnos inscriptos por curso. Para resolver de una manera
sencilla esta situación, SQL nos permite agrupar los registros de la tabla
"alumnos" por la columna "codigocurso" y contar la cantidad
de registros que hay por cada código de curso igual.
El programa que nos permite resolver este problema es el
siguiente:
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion=mysql_connect("localhost","root","")
or
die("Problemas
en la conexion");
mysql_select_db("base1",$conexion) or
die("Problemas
en la selección de la base de datos");
$registros=mysql_query("select count(alu.codigo) as cantidad,
nombrecurso from alumnos as alu
inner join cursos as cur
on cur.codigo=alu.codigocurso
group by alu.codigocurso", $conexion)
or
die("Problemas
en el select:".mysql_error());
while ($reg=mysql_fetch_array($registros))
{
echo "Nombre del
curso:".$reg['nombrecurso']."<br>";
echo "Cantidad de
inscriptos:".$reg['cantidad']."<br>";
echo "<hr>";
}
mysql_close($conexion);
?>
</body>
</html>
Hay varias partes importantes en este código; primero, en
el select indicamos que cuente la cantidad de registros de la tabla
"alumnos":
"select count(alu.codigo) as cantidad,
nombrecurso from alumnos as alu
Pero, como veremos más adelante, en 'cantidad' no se
almacena la cantidad total de registros de la tabla "alumnos" debido
a que más adelante empleamos la cláusula group by.
Como necesitamos rescatar el nombre del curso hacemos el
apareo con la tabla "cursos":
inner join cursos as cur on
cur.codigo=alu.codigocurso
Por último en la sentencia select de SQL disponemos la
cláusula group by:
group by alu.codigocurso"
Con esta cláusula se hace un corte de control por cada
grupo de registros que tienen el mismo código de curso almacenado.
Luego mostramos el nombre de curso con la cantidad de
inscriptos para dicho curso:
while ($reg=mysql_fetch_array($registros))
{
echo "Nombre del
curso:".$reg['nombrecurso']."<br>";
echo "Cantidad de
inscriptos:".$reg['cantidad']."<br>";
echo "<hr>";
}
0 comentarios:
Publicar un comentario