sql >> Base de Datos >  >> RDS >> PostgreSQL

SQL:crea una vista a partir de varias tablas

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 JOIN 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/