Luego de de nuestra extensa recopilación de información pudimos solucionar este atasco que suelen tener ciertos de nuestros lectores. Te ofrecemos la respuesta y deseamos resultarte de gran apoyo.
Solución:
La unión no es lo que quieres. Desea utilizar uniones para crear filas individuales. No está claro qué constituye una fila única en sus tablas y cómo se relacionan realmente entre sí y tampoco está claro si una tabla tendrá filas para cada país en cada año. Pero creo que esto funcionará:
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 combinación izquierda (externa) devolverá filas de la primera tabla incluso si no hay coincidencias en la segunda. He escrito esto asumiendo que tendrías una fila para cada país por cada año en la tabla de ingresos. Si no lo hace, las cosas se ponen un poco complicadas ya que MySQL no tiene soporte incorporado para FULL OUTER JOINs la última vez que lo verifiqué. Hay formas de simularlo, e involucrarían a los sindicatos. Este artículo profundiza un poco en el tema: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/
Gracias por la ayuda. Esto es lo que terminé haciendo para que funcione.
CREATE VIEW V AS
SELECT *
FROM ((POP NATURAL FULL OUTER JOIN FOOD)
NATURAL FULL OUTER JOIN INCOME);
Esto también funciona y no tienes que usar join ni nada:
DROP VIEW IF EXISTS yourview;
CREATE VIEW yourview AS
SELECT table1.column1,
table2.column2
FROM
table1, table2
WHERE table1.column1 = table2.column1;
Si sostienes alguna sospecha y disposición de desarrollar nuestro artículo te evocamos dejar una explicación y con placer lo estudiaremos.