Union er ikke, hvad du ønsker. Du vil bruge joinforbindelser til at oprette enkelte rækker. Det er lidt uklart, hvad der udgør en unik række i dine tabeller, og hvordan de virkelig relaterer til hinanden, og det er også uklart, om en tabel vil have rækker for hvert land hvert år. Men jeg tror, det vil virke:
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
);
Den venstre (ydre) join vil returnere rækker fra den første tabel, selvom der ikke er nogen matcher i den anden. Jeg har skrevet dette under antagelse af, at du ville have en række for hvert land for hvert år i indkomsttabellen. Hvis du ikke gør tingene lidt behårede, da MySQL ikke har indbygget understøttelse af FULL OUTER JOINs sidst jeg tjekkede. Der er måder at simulere det på, og de ville involvere fagforeninger. Denne artikel går lidt i dybden om emnet:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/