sql >> Databáze >  >> RDS >> PostgreSQL

SQL - Vytvořte pohled z více tabulek

Unie není to, co chcete. Chcete použít spojení k vytvoření jednotlivých řádků. Je trochu nejasné, co tvoří jedinečný řádek ve vašich tabulkách a jak spolu skutečně souvisí, a také není jasné, zda jedna tabulka bude mít řádky pro každou zemi v každém roce. Ale myslím, že to bude fungovat:

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

Levé (vnější) spojení vrátí řádky z první tabulky, i když ve druhé nejsou žádné shody. Napsal jsem to za předpokladu, že v tabulce příjmů budete mít řádek pro každou zemi pro každý rok. Pokud tomu tak není, věci jsou trochu chlupaté, protože MySQL nemá vestavěnou podporu pro FULL OUTER JOINs, co jsem naposledy kontroloval. Existují způsoby, jak to simulovat, a ty by zahrnovaly odbory. Tento článek jde do určité hloubky na toto téma:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/



  1. Funkce GROUP_CONCAT() v MySQL

  2. Formát data SQL:Jak s ním zacházet chytře

  3. 5 jednoduchých kroků, jak začít s MariaDB a Tableau

  4. Přidejte sloupec časového razítka s výchozím NOW() pouze pro nové řádky