Union är inte vad du vill. Du vill använda kopplingar för att skapa enstaka rader. Det är lite oklart vad som är en unik rad i dina tabeller och hur de egentligen förhåller sig till varandra och det är också oklart om en tabell kommer att ha rader för varje land under varje år. Men jag tror att det här kommer att fungera:
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 vänstra (yttre) kopplingen kommer att returnera rader från det första bordet även om det inte finns några matchningar i det andra. Jag har skrivit detta förutsatt att du skulle ha en rad för varje land för varje år i inkomsttabellen. Om du inte gör det blir det lite hårigt eftersom MySQL inte har inbyggt stöd för FULL OUTER JOINs senast jag kollade. Det finns sätt att simulera det, och de skulle involvera fackföreningar. Den här artikeln går in på lite djupare om ämnet:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/