sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL - Skapa vy från flera tabeller

Union är inte vad du vill. Du vill använda kopplingar för att skapa enstaka rader. Det är lite oklart vad som är en unik rad i dina tabeller och hur de egentligen förhåller sig till varandra och det är också oklart om en tabell kommer att ha rader för varje land under varje år. Men jag tror att det här kommer att fungera:

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

Den vänstra (yttre) kopplingen kommer att returnera rader från det första bordet även om det inte finns några matchningar i det andra. Jag har skrivit detta förutsatt att du skulle ha en rad för varje land för varje år i inkomsttabellen. Om du inte gör det blir det lite hårigt eftersom MySQL inte har inbyggt stöd för FULL OUTER JOINs senast jag kollade. Det finns sätt att simulera det, och de skulle involvera fackföreningar. Den här artikeln går in på lite djupare om ämnet:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/



  1. Oracle:hur får man procent av totalt genom en fråga?

  2. Barman 2.11:barman-cloud-restore och barman-cloud-wal-restore

  3. Använd NEWID() för att skapa ett unikt värde i SQL Server

  4. Världens populäraste databashanteringssystem