sql >> Databáze >  >> RDS >> Oracle

Problém JOIN:Opravte příkaz SQL, abyste vyřešili:ORA-01799:sloupec nemusí být vnější připojen k poddotazu

Mělo by to fungovat, pokud toto přepnete na where klauzule:

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
                                )

Ztratíte však vlastnosti „levého vnějšího spojení“, takže byste také chtěli přidat:or fx.ftf_validitystartdate is null . Myslím, že v_CurrentDate pochází z "p". Vždy je dobré používat před názvy sloupců aliasy tabulek.

Ptám se však, zda je poddotaz skutečně potřeba. Je potřeba pouze v případě, že existuje více než jeden záznam, který splňuje podmínky uvnitř poddotazu. Jinak si myslím, že stačí změnit on klauzule být:

    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. Jak zobrazím seznam všech sloupců v tabulce?

  2. Django - Fulltextové vyhledávání - zástupný znak

  3. Příklad spuštění Oracle před vložením NEBO aktualizací

  4. Jak používat 2 různé databázové adaptéry (SQL Server a PostgreSQL) v Rails ve stejném prostředí?