SI limpio un poco tu código y lo presento más estructurado me queda esto:
Código MySQL:
Ver original vcc.id, vcc.id_coche,
GROUP_CONCAT(va.nombre_apellido
, ', ' ,va.tipop
, ', ' ,va.dni SEPARATOR
'') adicional
, GROUP_CONCAT(vr.nombre
, ' ' ,vr.apellido
, ', ' ,vr.dni SEPARATOR
' ') alumnos
, vc.marca,
vc.dominio
viajes_adicionales va
Entonces podemos ver algo notable...
Esta es la segunda vez que veo que alguien quiere usar FIND_IN_SET() en un LEFT o INNER JOIN, y francamente no comprendo por qué piensan que sirve...
Esa es una función de cadena que devuelve un valor entero superior a cero que indica la posición de un valor de cadena (primer parámetro) dentro de una cadena de texto con valores separados por comas.
En el contexto de un JOIN no es una buena elección, porque la idea del JOIN es relacionar cada valor de un campo de una tabla, contra el valor de otro campo de otra tabla. Pero en ningún momento se habla de que busque uno entre un conjunto de valores...
El resultado de eso puede ser errático, porque contradice la lógica de un JOIN.
Además, el hecho de que estés usando ambos parámetros como provenientes de dos tablas distintas, y siendo que el segundo debería ser una cadena que contenga más de un valor, me lleva a pensar que esa tabla tiene un campo multivaluado de tipo VARCHAR, donde guardas una colección de valores en cada uno de sus registros... Y eso sí es una transgresión violenta al modelo E-R, a la consistencia de datos, a la integridad referencial y sin dudas a las reglas de normalización.
Digo esto, porque es regla absoluta que un campo en un mismo registro sólo debe contener un único valor atómico, y no más de uno.
Así pues, ¿tiene esa columna más de un valor o tiene uno sólo por registro?
Si es lo primero, el JOIN está mal escrito. Si es lo segundo, el diseño de las tablas está mal.
Eso es lo primero que hay que resolver.
La consulta vendrá después (e incluso puede resolverse sola, al corregir las cosas).