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

SQL - Opret visning fra flere tabeller

Union er ikke, hvad du ønsker. Du vil bruge joinforbindelser til at oprette enkelte rækker. Det er lidt uklart, hvad der udgør en unik række i dine tabeller, og hvordan de virkelig relaterer til hinanden, og det er også uklart, om en tabel vil have rækker for hvert land hvert år. Men jeg tror, ​​det vil virke:

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 venstre (ydre) join vil returnere rækker fra den første tabel, selvom der ikke er nogen matcher i den anden. Jeg har skrevet dette under antagelse af, at du ville have en række for hvert land for hvert år i indkomsttabellen. Hvis du ikke gør tingene lidt behårede, da MySQL ikke har indbygget understøttelse af FULL OUTER JOINs sidst jeg tjekkede. Der er måder at simulere det på, og de ville involvere fagforeninger. Denne artikel går lidt i dybden om emnet:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/



  1. ORA-06502:PL/SQL:numerisk eller værdifejl:tegnstrengbuffer for lille

  2. 4 måder at liste alle tabeller i en MySQL-database

  3. Oracle PLSQL-blokstruktur og -typer

  4. Migrering af Azure Database til MySQL/MariaDB til en On-Prem Server