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

Viditelnost rozdílu ve spojení poddotazů a kde

V

FROM working_place wp 
JOIN working_place_worker wpw ON ... 
WHERE ...

ON klauzule odkazuje pouze do dvou tabulek účastnících se spojení, konkrétně wp a wpw . Názvy z vnějšího dotazu nejsou pro něj viditelné.

WHERE klauzule (a její sestřenice HAVING je prostředek, kterým je vnější dotaz korelován s poddotazem. Jména z vnějšího dotazu jsou na to vidět.

Abyste si to snadno zapamatovali,

  • ON je o JOIN, o tom, jak spolu dvě tabulky tvoří řádek (nebo řádky)
  • KDE jde o kritéria výběru, test, kterým musí řádky projít

Zatímco analyzátor SQL připustí literály (které nejsou názvy sloupců) v klauzuli ON, nakreslí čáru u odkazů na sloupce mimo spojení. Můžete to považovat za laskavost, která chrání před chybami.

Ve vašem případě wo tabulka není součástí JOIN a je odmítnut. je součástí celého dotazu a je rozpoznán pomocí WHERE .




  1. Úvod k prohlášení FORALL v databázi Oracle

  2. Nastavení postgres s baňkou na win7

  3. Mysql localhost !=127.0.0.1?

  4. Inner Join laravel 5.2