Unie is niet wat je wilt. U wilt joins gebruiken om enkele rijen te maken. Het is een beetje onduidelijk wat een unieke rij in je tabellen is en hoe ze zich echt tot elkaar verhouden, en het is ook onduidelijk of een tabel rijen zal hebben voor elk land in elk jaar. Maar ik denk dat dit zal werken:
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
);
De linker (buitenste) join retourneert rijen van de eerste tafel, zelfs als er geen overeenkomsten zijn in de tweede. Ik heb dit geschreven in de veronderstelling dat je voor elk land een rij zou hebben voor elk jaar in de inkomenstabel. Als je dat niet doet, worden de dingen een beetje harig, omdat MySQL geen ingebouwde ondersteuning heeft voor FULL OUTER JOINs die ik laatst heb gecontroleerd. Er zijn manieren om het te simuleren, en daarbij zouden vakbonden betrokken zijn. Dit artikel gaat dieper in op het onderwerp:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/