Algo así me suponía: Estás tratando de lograr un reporte, y la consulta que haces no resulta completamente práctica para eso.
Bueno, para obtener ese resultado habría que hacer algo como:
Código MySQL:
Ver original P.IdPadre,
CONCAT (P.
`Nombre Padre`, ' ', P.
`Primer Apellidos Padre`, ' ' , P.
`Segundo Apellido Padre`) NombrePadre
, A.IdAlumno,
CONCAT(A.
`Primer Apellido`, ' ', A.
`Segundo Apellido`, ', ', A.
`Nombre Alumno`) NombreAlumno
, A.IdGrupo,
G.`Nombre Grupo`,
a.Confirmado = '1'
AND P.
`Forma de pago` = 'INGRESO EN CUENTA'
Siempre en el entendimiento que ciertas columnas repetirán datos, y esos detalles los deberás resolver programáticamente.
Te comento que este tipo de reporte se realizan fácilmente con algunas herramientas de BI (business intelligence), precisamente diseñadas para eso, donde esos detalles se han estandarizados para lograr los resultados buscados por el usuario. En tu caso deberás tratar de crear esa funcionalidad para tu propio uso (a menos que quieras buscar una herramienta como las que menciono).
No hay mucho otros caminos.
Si aún así quieres lograrlo a puro SQL, es muy probable que debamos caer en el uso de stored procedures, porque son varias etapas de consulta para lograr un reporte como lo estas mostrando. Y no hay consultas únicas que lo puedan lograr... Es decir, no son simples SELECTs, sin importar cuántos JOINs tengan.