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

Proč by tento dotaz způsoboval sloučení kartézského spojení v Oracle

Problém je v tom, že Oracle neví, že get_fiscal_year_start_date (SYSDATE) vrátí jeden jediný výsledek. Předpokládá se tedy, že bude generovat mnoho řádků.

Zjevně nemám po ruce testovací svazek, ale tato verze vašeho dotazu by měla zakázat sloučení kartézského spojení.

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 ví, že DUAL má jeden řádek, a proto poddotaz vrátí jednu hodnotu.




  1. Jak vynutit jedinečnost napříč více tabulkami

  2. TypeORM - Jak vytvořit novou tabulku a spustit migraci automaticky v produkčním režimu?

  3. Výukový program MySQL Workbench – Komplexní průvodce nástrojem RDBMS

  4. Přidejte vlastní skryté pole ve formě paypal a získejte ho na přesměrované stránce