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

このクエリによってOracleでマージデカルト結合が発生するのはなぜですか

    問題は、Oracleがget_fiscal_year_start_date (SYSDATE)を認識していないことです。 1つの結果を返します。したがって、多くの行が生成されることを前提としています。

    明らかに、手元にあるテストハーネスはありませんが、このバージョンのクエリでは、マージデカルト結合を排除する必要があります。

    SELECT RTRIM (position) AS "POSITION", 
    .  // Other fields 
    . 
    . 
    FROM schema.table x 
         , ( select get_fiscal_year_start_date (SYSDATE) as fiscal_year 
             from dual ) fy
    WHERE hours > 0  
    AND pay = 'RGW' 
    AND NOT EXISTS( SELECT position 
                    FROM  schema.table2 y 
                    where y.date = fy.fiscal_year
                    AND y.position = x.position ) 
    

    Oracleは、DUALに1つの行があることを認識しているため、サブクエリは1つの値を返します。




    1. SQL Server 2008 でのテーブルの作成に関する SQL コメント

    2. json配列にMySQLの別のjson配列のアイテムが少なくとも1つ含まれているかどうかを確認する方法はありますか?

    3. PostgreSQLがユーザーとグループをロールにマージしたのはなぜですか?

    4. 解析されたデータをPythonからSQLDeveloperのOracleテーブルにエクスポートするにはどうすればよいですか?