Yo a todo el asunto le veo un problema inicial: La tabla "Ciudad" no está relacionada de ninguna forma con las demás, por lo que hacer un INNER JOIN con ella es algo traído de los pelos.
Me explico gráficamente. Este es el modelo según las tablas descriptas:
En este gráfico se puede apreciar que niguna de las otras tablas comparte la clave de la ciudad como FK, por lo que no se puede usar en un INNER JOIN.
Tampoco se puede hacer contra la dirección de la empresa, porque no tienen el mismo dominio: El nombre de la ciudad contiene 50 caracteres y el de la direccion 70.
Si la tabla EMPRESA lleva el código indicado, entonces si.
En cualquier caso lo primero que debes es buscar la relación con las empresas. No con las ciudades, ya que esa es la que te importa:
Código MySQL:
Ver original e.raz_soc_emp,
eg.ape_egr,
eg.nom_egr
Si esto produce resultados, entonces hay que probar:
Código MySQL:
Ver original c.nom_ciu,
e.raz_soc_emp,
eg.ape_egr,
eg.nom_egr
Hay que recordar que si no se ha vinculado una empresa con una ciudad, esta consulta no devolverá esa empresa. El INNER JOIN es restrictivo: todos los valores deben existir para que devuelva el registro.
Si existe la posibilidad de que no se haya vinculado el la empresa con la ciudad, debe usarse LEFT JOIN:
Código MySQL:
Ver original c.nom_ciu,
e.raz_soc_emp,
eg.ape_egr,
eg.nom_egr
Detalle: Si un campo puede ser NULL no se debe colocar en el ORDER BY o en el GROUP BY porque ninguna de las dos clausulas puede procesar nulos.