Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/06/2011, 17:04
Avatar de IngAndresMartinez
IngAndresMartinez
 
Fecha de Ingreso: junio-2011
Ubicación: Piedecuesta-Santader-Piedecuesta
Mensajes: 7
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Conteo Registros por Grupo para hallar la diferencia con el registro de ot

Hola que tal, Estuve revisando tu problema y creo que lo puedes relizar una consulta como esta :

Select count(IdGrupo)'Cantidad Estudiantes',Capacidad 'Capacidad Grupo',
(Capacidad-Count(IdGrupo)) 'Cantidad Restante'
from Estudiante,Grupo where IdGrupo=101;

Los campos que estan en rojo son las variables que puedes cambiar

Pero si quieres tener siempre el referente de la cantidad de cupos que estan disponibles en la entidad Grupos sin necesidad de hacer la consulta anterior constantemente , Puedes incorporar un nuevo campo que se llame
CapacidadDisponible y realizar un Trigger para que cada vez que se Ingrese un Estudiante en un Grupo, Me vaya descontando la capacidad disponible

Sería algo como esto:

Las entidades quedarían así :

Drop table if exists Grupo;
Create table Grupo (
Id_Grupo Int,
Capacidad Int,
CapacidadDisponible Int
);

Drop table if exists Estudiante;
Create table Estudiante(
Cod_Estu Int,
IdGrupo Int,
Periodo Int
);

Creas las entidades y paso seguido creamos el Trigger, para que cada vez que realices un Insert en Estudiante la cantidad disponible vaya Disminuyendo por cada estudiante nuevo que se Registre.
Importante: El trigger lo debes crear antes de que realices los Insert, de lo contrario no se modificaran los campos.


Delimiter//
Drop trigger if exists NuevaCapacidadGrupo;//
Create trigger NuevaCapacidadGrupo
After insert on Estudiante
For each row
Update Grupo set CapacidadDisponible=CapacidadDisponible-1 where New.IdGrupo=Id_Grupo;

Espero que te haya servido de ayuda
Espero comentarios.........

Andrés Martinez