L'union n'est pas ce que vous voulez. Vous souhaitez utiliser des jointures pour créer des lignes uniques. Il est un peu difficile de savoir ce qui constitue une ligne unique dans vos tableaux et comment ils sont réellement liés les uns aux autres et il est également difficile de savoir si un tableau aura des lignes pour chaque pays chaque année. Mais je pense que cela fonctionnera :
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 jointure gauche (externe) renverra les lignes de la première table même s'il n'y a pas de correspondance dans la seconde. J'ai écrit ceci en supposant que vous auriez une ligne pour chaque pays pour chaque année dans le tableau des revenus. Si vous ne le faites pas, les choses deviennent un peu poilues car MySQL n'a pas de support intégré pour les FULL OUTER JOINs la dernière fois que j'ai vérifié. Il existe des moyens de le simuler, et ils impliqueraient les syndicats. Cet article approfondit le sujet :http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/