@ciranoneitor como te explique puedes cubrir lo que necesitas.
Checa un alumno puede hacer uno o mas pagos, entonces esto no es buena idea tenerlo en una sola tabla por eso fue que te puse 3 tablas. [ Alumno ] -* [ CargoAlumno ] *- [ Cargo ]
+ La tabla alumno tiene la información como:
- id: 1000
- nombre: Juan
- id: 1001
- nombre: Roberto
+ La tabla cargo tiene la información como:
- id: 1000
- nombre: Colegiatura Octubre
- precio: 1000
- id: 1001
- nombre: Inscripción
- precio: 2000
+ La tabla CargoAlumno es la que relaciona las otras dos
- alumno_id: 1000
- cargo_id: 1000
- estado: pendiente
- alumno_id: 1000
- cargo_id: 1001
- estado: pendiente
- alumno_id: 1001
- cargo_id: 1000
- estado: pagado
- alumno_id: 1001
- cargo_id: 1001
- estado: pagado
[ Reportes ]
Alumnos que ya pagaron "Colegiatura Octubre"
Código SQL:
Ver originalSELECT J1.*
FROM CargoAlumno BASE
INNER JOIN alumno J1 ON BASE.alumno_id = J1.id
WHERE BASE.cargo_id = 1000
AND BASE.estado = 'pagado'
Como puedes ver cubre todo lo que necesitas y esta ordenado, puedes agregar otros campos como fecha_pago, fecha_expiracion, etc. ya depende de las necesidades.
Saludos!