tu consulta estaría básicamente bien, siempre y cuando todas las tablas tengan registros relacionados (si falta relación entre registros de una tabla, no saldrá, aunque los tenga en las otras). Eso no debería ser problema
Por otro lado, le estás poniendo una condición de fecha, tal que sólo devolverá datos de aquellos que cumplan con la fecha, y no todos los últimos descuentos existentes, que bien podrían ser anteriores.
Fuera de eso, no debería haber problemas en la consulta tal como la pones, por lo que yo probaría deshabilitar la fecha:
Código MySQL:
Ver original/* Formatted on 06/11/2013 10:14:57 (QP5 v5.163.1008.3004) */
ed.id_empresas,
ed.perfil,
e.id id_descuento,
e.id_empresas,
e.activo,
e.descuento,
e.limitaciones,
e.fecha_desde,
e.fecha_hasta,
m.id,
m.nombre,
m.id_categorias,
m.nombre_pc,
m.apellido1_pc,
m.email,
m.telefono,
m.cif,
em.id id_empresas,
em.id_mis_datos,
p.id_empresas
INNER JOIN empresas_direcciones ed
ON ed.id_empresas
= em.id
INNER JOIN empresas_descuentos e
ON e.id_empresas
= ed.id_empresas
e.activo = 1
-- AND e.fecha_hasta >= "2013-11-06"
Por cierto: No uses AS, sólo lleva a ensuciar código, y es una cláusula obsoleta, mantenida por compatibilidad.