Ah, bien, pero entonces ... solo preguntar ¿vale la pena relacionar ambos? o es posible que en tu e.cp y e.cpreal tengas datos distintos? ... esto es por performance ... porque si tienen siempre datos los 2 campos y en ambos tienes siempre lo mismo valdría la pena eliminar uno tanto de la tabla como del join, con lo que te quedaría
Código:
SELECT -datosvariosdeempresa-
FROM empresas e
LEFT JOIN codpostal c
ON e.cp = c.cp
de otra forma si crees que no sobran, es correcto lo que dices ...
Suerte con eso