Unie není to, co chcete. Chcete použít spojení k vytvoření jednotlivých řádků. Je trochu nejasné, co tvoří jedinečný řádek ve vašich tabulkách a jak spolu skutečně souvisí, a také není jasné, zda jedna tabulka bude mít řádky pro každou zemi v každém roce. Ale myslím, že to bude fungovat:
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
);
Levé (vnější) spojení vrátí řádky z první tabulky, i když ve druhé nejsou žádné shody. Napsal jsem to za předpokladu, že v tabulce příjmů budete mít řádek pro každou zemi pro každý rok. Pokud tomu tak není, věci jsou trochu chlupaté, protože MySQL nemá vestavěnou podporu pro FULL OUTER JOINs, co jsem naposledy kontroloval. Existují způsoby, jak to simulovat, a ty by zahrnovaly odbory. Tento článek jde do určité hloubky na toto téma:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/