La unión no es lo que quieres. Desea utilizar uniones para crear filas individuales. No está claro qué constituye una fila única en sus tablas y cómo se relacionan realmente entre sí y tampoco está claro si una tabla tendrá filas para cada país en cada año. Pero creo que esto funcionará:
CREATE VIEW V AS (
SELECT i.country,i.year,p.pop,f.food,i.income FROM
INCOME i
LEFT JOIN
POP p
ON
i.country=p.country
LEFT JOIN
Food f
ON
i.country=f.country
WHERE
i.year=p.year
AND
i.year=f.year
);
La combinación izquierda (externa) devolverá filas de la primera tabla incluso si no hay coincidencias en la segunda. He escrito esto asumiendo que tendrías una fila para cada país por cada año en la tabla de ingresos. Si no lo hace, las cosas se ponen un poco complicadas ya que MySQL no tiene soporte incorporado para FULL OUTER JOIN la última vez que lo verifiqué. Hay formas de simularlo, e involucrarían a los sindicatos. Este artículo profundiza un poco en el tema:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/