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

内部結合と外部結合;テーブルの順序は重要ですか?

    これは、演算子の優先順位の問題と考えることができると思います。

    これを書くとき:

    FROM groups grp,
         insrel archiverel  
    LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
    LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber   
    

    パーサーは次のように解釈すると思います:

    FROM groups grp,
    (
      (
         insrel archiverel  
         LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
      )
    LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
    )
    

    その場合、最も内側の結合で「grp」はバインドされていません。

    「groups」と「insrel」で行を逆にすると、最も内側の結合が「groups」と「ownrel」に適用されるため、機能します。

    おそらくこれもうまくいくでしょう:

        FROM groups grp
             JOIN insrel archiverel  ON archiverel.dnumber = grp.number
        LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
        LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber 
    WHERE archiverel.snumber = 11128188
    


    1. 2Oracleの日付から月を返す関数

    2. 実行計画のStarJoinInfo

    3. MySQLでrow_numberを取得する方法

    4. OracleDeveloperVMを使用して学習およびテストするための事前構築されたOracleデータベース