Por lo pronto, estás poniendo mal el nombre del campo evaluado en el REPLACE(). Los apóstrofes son para cadenas de texto, no para nombres de campos o tablas. Lo que pusiste busca los espacios dentro de una cadena que dice "ed.nombre", no dentro del campo correspondiente.
Por otro lado, ¿por qué razón llega la cadena sin espacios? ¿No sería más sencillo que busque exactamente el texto que necesitas.
Finalmente: Ten cuidado con los LEFT JOIN, si se genera un JOIn en estrella, los resultado pueden ser erróneos.
Código MySQL:
Ver original md.id,
md.descripcion,
md.logo,
md.id_categorias categoria_comercio,
md.web,
md.longitud,
md.latitud,
md.email_cliente email_misdatos,
md.horario,
md.id_agrupaciones,
md.twitter,
md.facebook,
ed.id id_direccion,
ed.nombre nombre_direccion,
ed.direccion,
ed.telefono,
ed.id_municipios,
ed.id_provincias,
ed.cp,
ed.email email_direccion,
e.id,
e.id_mis_datos,
a.id id_categorias,
a.descripcion descripcion_categorias,
c.id id_descuentos,
c.id_empresas,
c.descuento,
c.limitaciones,
c.fecha_desde,
c.fecha_hasta
FROM empresas_direcciones ed
LEFT JOIN agrupaciones a
ON a.id
= md.id_agrupaciones
LEFT JOIN empresas_descuentos c
ON c.id_empresas
= ed.id_empresas