PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

SQL - Criar visualização de várias tabelas


União não é o que você quer. Você deseja usar junções para criar linhas únicas. Não está claro o que constitui uma linha única em suas tabelas e como elas realmente se relacionam umas com as outras e também não está claro se uma tabela terá linhas para cada país em todos os anos. Mas acho que isso vai 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
);

A junção esquerda (externa) retornará linhas da primeira tabela, mesmo que não haja correspondências na segunda. Eu escrevi isso assumindo que você teria uma linha para cada país para cada ano na tabela de renda. Se você não fizer isso, as coisas ficam um pouco complicadas, pois o MySQL não possui suporte embutido para FULL OUTER JOINs na última vez que verifiquei. Existem maneiras de simulá-lo, e envolveriam sindicatos. Este artigo aprofunda o assunto:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/