sql >> データベース >  >> RDS >> PostgreSQL

SQL-複数のテーブルからビューを作成します

    ユニオンはあなたが望むものではありません。結合を使用して単一の行を作成するとします。テーブル内の一意の行を構成するものと、それらが実際に相互にどのように関連しているかは少し不明です。また、毎年1つのテーブルにすべての国の行があるかどうかも不明です。しかし、これはうまくいくと思います:

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

    左(外部)結合は、2番目のテーブルに一致するものがない場合でも、最初のテーブルから行を返します。これは、所得表に毎年すべての国の行があると仮定して書いています。 MySQLには最後にチェックしたFULLOUTERJOINのサポートが組み込まれていないため、少し厄介なことがない場合。それをシミュレートする方法はいくつかあり、それらには組合が関与します。この記事では、このテーマについて詳しく説明します:http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/



    1. SQLServerでのINTERSECTのしくみ

    2. 特別な島々の挑戦に対する読者の解決策

    3. HA/DRソリューションの自己妄想を避ける

    4. パフォーマンスの神話:切り捨てられたカントはロールバックされます