PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

SQL - Crea vista da più tabelle

L'unione non è quello che vuoi. Vuoi usare i join per creare righe singole. Non è chiaro cosa costituisca una riga univoca nelle tabelle e in che modo si relazionano realmente tra loro e non è nemmeno chiaro se una tabella avrà righe per ogni paese in ogni anno. Ma penso che funzionerà:

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
);

Il join sinistro (esterno) restituirà righe dalla prima tabella anche se non ci sono corrispondenze nella seconda. Ho scritto questo supponendo che avresti una riga per ogni paese per ogni anno nella tabella dei redditi. Se non le cose si complicano perché MySQL non ha il supporto integrato per FULL OUTER JOIN l'ultima volta che ho controllato. Ci sono modi per simularlo e coinvolgerebbero i sindacati. Questo articolo approfondisce l'argomento:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/