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

JOINの問題:解決するSQL文を修正してください:ORA-01799:列がサブクエリに外部結合されていない可能性があります

    これをwhereに切り替えると機能するはずです 条項:

    select *
    from acc_accounts acc join
         kp_paramcore p
         on acc.account_no = p.accountnum and
            acc.suffix = p.suffixc LEFT JOIN
         ftf_rates fx
         ON p.maturestart = fx.ftf_vadealtsinir and
            p.maturefinish = fx.ftf_vadeustsinir and
            fx.statusrec = 'A' and
            fx.currencycode = acc.currencsw_kod and
            fx.status= 'A'
     where fx.ftf_validitystartdate= (SELECT MAX(ff.ftf_validitystartdate)
                                     FROM ftf_rates ff
                                     WHERE ff.status = 'A' and
                                           ff.statusrec = 'A'
                                           p.v_CurrentDate BETWEEN ff.systemstartdate AND ff.systemfinishdate                                            AND ff.currencycode = acc.currencsw_kod
                                    )
    

    ただし、「左外部結合」特性が失われるため、次も追加する必要があります。or fx.ftf_validitystartdate is null 。 v_CurrentDateは「p」から来ていると思います。列名の前にテーブルエイリアスを使用することをお勧めします。

    ただし、サブクエリが本当に必要かどうかは疑問です。サブクエリ内の条件を満たすレコードが複数ある場合にのみ必要です。それ以外の場合は、onを変更するだけでよいと思います 条項:

        ON p.maturestart = fx.ftf_vadealtsinir and
           p.maturefinish = fx.ftf_vadeustsinir and
           fx.statusrec = 'A' and
           fx.currencycode = acc.currencsw_kod and
           fx.status= 'A'and
           p.v_CurrentDate BETWEEN fx.systemstartdate AND fx.systemfinishdate
    


    1. PostgreSQLストリーミングレプリケーションと論理レプリケーション

    2. phpを使用して複数言語のテキストフィールドをmysqlに保存するにはどうすればよいですか?

    3. コマンド\dtが与える理由-関係が見つかりませんか?

    4. postgresql重複キーが一意性制約に違反しています