Infortunadamente, eso es consecuencia del SQL. Sólo puede devolverte la respuesta armándola con los datos que corresponden, y las repeticiones son consecuencia de la relación.
El tema e que no debes confundir lo que la base devuelve con lo que debes representar en la pantalla. Son cosas diferentes, y por eso precisamente te dije
"construir el reporte en la vista del formulario en pantalla.".
Es lo que se hace. El SQL no crea reportes. Los programas que usan el SQL lo hacen.
Si quieres simplificarte la vida usando un especie de
Report Builder para MySQL, pues simplemente tienes que buscar y pagar por uno. De lo contrario tendrás que programar para crear los que necesites.
Hay ciertos listados que se pueden generar por SQL, pero otros no, y en tu caso parece qeue deberás hacerlo por la aplicación.